C语言位域和sizeof问题

发布网友

我来回答

2个回答

热心网友

int i: 8; int j: 4; int a: 3 -- 3个元素类型相同。
int i: 8;int j: 4; char a: 3; -- 3个元素类型不相同。
结构的内存分配,元素的对齐和优化处理,同编译器有关。
sizeof() 运算符 算得的是真实的 占内存字节数。
3个元素类型不相同,占内存多一点,尚属有理。追问能不能详细解释一下第一个为什么是4吗 谢谢啦

追答位域,8+4+3 = 15
1 个 int , 4 字节,可存下 15 位。
4字节已是int型最小单位,不能再小。

热心网友

我试了一下,都是4呀追问我用的dev c++ 可能跟编译器有关吧

热心网友

int i: 8; int j: 4; int a: 3 -- 3个元素类型相同。
int i: 8;int j: 4; char a: 3; -- 3个元素类型不相同。
结构的内存分配,元素的对齐和优化处理,同编译器有关。
sizeof() 运算符 算得的是真实的 占内存字节数。
3个元素类型不相同,占内存多一点,尚属有理。追问能不能详细解释一下第一个为什么是4吗 谢谢啦

追答位域,8+4+3 = 15
1 个 int , 4 字节,可存下 15 位。
4字节已是int型最小单位,不能再小。

热心网友

我试了一下,都是4呀追问我用的dev c++ 可能跟编译器有关吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com