在结构体内部的变量声明语句中使用冒号操作符

3

不要忘记接受其他问题的最有用答案。请查看常见问题解答和每个答案旁边的勾选标记。 - Jonathan Leffler
请注意,(a) int x:2; 的符号是实现定义的(使用signed intunsigned int),(b) 类型为char的位域是非标准的,没有真正的理由不将y声明为unsigned y:4; - Keith Thompson
1个回答

7

这是用来指定位域的。字段的大小以位为单位给出。布局是与编译器相关的。


该死,每当我在核对答案时,总有人比我更快地找到了它 :(,干得好。 - Avery3R
@Jonathan Leffler - 你的意思是以下结构体中 xy 的顺序不能保证吗?- struct layout {int x:2; int y:2}; - MByD
1
@MByD:我的意思是,C标准没有定义x的位是最高有效位还是最低有效位。它没有定义这些位域是存储在1个字节、2个字节或4个字节(或任何其他字节数)中的。它没有定义这些值是有符号还是无符号的(因此您无法确定x的范围是-2..+1还是0..3,或者如果不使用二进制补码算术,则是其他范围);y也是如此。所有这些属性都是实现定义的(因此它们是已知和固定的,但是您不能在不查看编译器手册的情况下确定答案)。 - Jonathan Leffler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接