读书人

求解释为什么,该如何解决

发布时间: 2012-03-25 20:55:16 作者: rapoo

求解释,为什么
先一段小程序

C/C++ code
#include <stdio.h>#include <stdlib.h>typedef struct bitstruct{    int b1:5;    int :2;    int b2:2;}bitstruct;int main(){    bitstruct b;    memcpy(&b,"EMC",sizeof(b));    printf("%d,%d\n",b.b1,b.b2);}


已知E的ASCII码是0x45(0100 0101),M是0x4D(0100 1101)
为什么输出是5,-2?

[解决办法]
大端小端问题
[解决办法]
探讨

明白了,原来little endian和big endian在单个字节的位序也是不一样的。

[解决办法]
typedef struct bitstruct{
int b1:5;
int :3;
int b2:2;
}bitstruct;

改成3应该就是lz想要的了

5,1

[解决办法]
ansi c 中对 bit field 论述极少,是因为其严重依赖实现的平台,移植性很差,要用时最好先在平台上试验一下

读书人网 >C语言

热点推荐