求解释,为什么
先一段小程序
- 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?
[解决办法]
大端小端问题
[解决办法]
[解决办法]
typedef struct bitstruct{
int b1:5;
int :3;
int b2:2;
}bitstruct;
改成3应该就是lz想要的了
5,1
[解决办法]
ansi c 中对 bit field 论述极少,是因为其严重依赖实现的平台,移植性很差,要用时最好先在平台上试验一下