谁告诉我一下这种语法是什么意思?
#include <stdio.h>
struct Node
{
unsigned int na:3;
unsigned int nb:4;
unsigned int nc:6;
unsigned int nd:4;
char ch:8;
};
void main(void)
{
Node seg;
printf("sizeof of struct %d\n", sizeof(seg));
}
结果显示 8
unsigned int na:3; 到底是什么意思?
问题点数:20、回复次数:8Top
1 楼whq263(玄豹)回复于 2006-05-02 13:55:47 得分 5
unsigned int na:3是说na变量占3 bits
之所以sizeof(Node) = 8与编译器对齐关系有关Top
2 楼gemo(欧尼迪巴戈)回复于 2006-05-02 14:04:09 得分 0
那为什么又不能直接在main里面定义unsigned int na:3;呢?Top
3 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2006-05-02 14:58:53 得分 5
这个是结构体里面的位域问题~
在main函数里面直接定义当然不可以了~~~Top
4 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2006-05-02 15:02:15 得分 0
对于上面的结果为什么为8,这个和编译器的对齐方式有关~
具体可以参考:http://blog.csdn.net/O_OCalmHawk/archive/2005/04/20/356126.aspxTop
5 楼niatclock(豆豆雅)回复于 2006-05-02 17:44:36 得分 5
Node seg;
sizeof(seg);
//取Node结构体中位数最大者,Node结构体中char ch:8;为最大,所以输出8Top
6 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2006-05-03 14:02:27 得分 4
bit filed 位域
老谭的《C...》提到过Top
7 楼tomtom123(abc)回复于 2006-05-03 22:49:48 得分 0
markTop
8 楼Ninstein(www.Ninstein.Com)回复于 2006-05-03 23:47:17 得分 1
位段 接省空间Top




