我期望1作为输出。
#include<stdio.h>
int main(){
struct A{
int a:1;
};
struct A bb;
bb.a=1;
printf("%d",bb.a);
return 0;
}
这样做int a:1
,您正在设置a
为1 bit signed int
。它由1位表示,并在您的实现中采用二进制补码表示,范围为{0,-1}
。因此将设置1
为a
将代表的值-1
。
附录:
注意,C90
按照标准,平原int
是一个signed int
;但是当涉及位域时,以下内容成立:
位字段的类型可以为int,unsigned int或signed int。实现定义是否将纯
int
位字段的高阶位位置视为符号位
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句