首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-25 
求解释,为什么先一段小程序C/C++ code#include stdio.h#include stdlib.htypedef struct bitstruct{in

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

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 论述极少,是因为其严重依赖实现的平台,移植性很差,要用时最好先在平台上试验一下

热点排行