结构体位域的问题!!

titicacahang 2007-09-05 04:25:35
typedef struct
{
int a : 1;
int b : 1;
int c : 1;
} test;

void main()
{
test k;
k.a = 1;
k.b = 0;
k.c = 0;

printf("%d, %d, %d\n", k.a, k.b, k.c);
}

问题1: 为什么在test k;后,我断点去看了,初始值为 a =0, b=0,c=-1,对于c=-1不理解??
问题2:这样输入为什么k.a会是-1呀?想也不想不通....
...全文
172 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
titicacahang 2007-09-06
  • 打赏
  • 举报
回复
结果问题1我还是不清楚哪
titicacahang 2007-09-05
  • 打赏
  • 举报
回复
但是问题1呢..c初始的时候是-1??这个怎么理解?
arong1234 2007-09-05
  • 打赏
  • 举报
回复
因为只有一位,当它设为1以后,等于符号位设为1,符号为1的就是负数啊?所有位为1的都是负数,这是基本规则 啊?
taodm 2007-09-05
  • 打赏
  • 举报
回复
int是有符号位的啊,也就是说它至少要2bit
所以,位域里不要放有符号类型
另外,最好永远不要用位域

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧