Chinaunix
标题:
请问:C中的位段的问题
[打印本页]
作者:
netdoger
时间:
2016-07-05 09:32
标题:
请问:C中的位段的问题
请看:
struct pack_data
{
unsigned char a:3;
unsigned char b:1;
unsigned char c:4;
}data;
data.a=5;
data.b=1;
data.c=3;
请问:在位段中,a是字节中最低3位吗?
这个字节的值是0x3d吗?
作者:
seufy88
时间:
2016-07-05 09:59
这个编译器依存的。
a不一定要放在最低3位,C语言并没有这样的规定。所以怎么实现就看平台上的编译器了。
作者:
netdoger
时间:
2016-07-05 10:15
那如何查看编译器的设置呢?我用的是X86系统
作者:
windoze
时间:
2016-07-05 10:15
这种东西没有标准,所以不要用bit field,直接用位运算。
作者:
seufy88
时间:
2016-07-05 10:41
回复
3#
netdoger
你使用union方式就可以读出底层字节内容了。也就可以得知你用的编译器是如何安排a的。
不过同样是X86平台,不同编译器也可以使用不同安排方式,所以不要去深究a是怎样存放的
作者:
爻易
时间:
2016-07-05 10:43
就如C没有规定必须用main函数一样,这些都是实现相关的。
要看具体位段如何安排,写个小测试程序打印整个字节数据看一下即可
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2