C++中 形如int x:1;int x:2;int x:32(冒号后为1-32,32为最大值)的意思解释

C++中 形如int x:1;int x:2;int x:32(冒号后为1-32,32为最大值)的意思解释  

2012-04-12 12:10:34|  分类: 默认分类 |字号 订阅

最近在看《程序员面试宝典第三版》(书感觉较差),第十二章 位运算与嵌入式编程,有一段代码如下所示:

struct a{

int x:1;

int y:2;

int z:33://超过了4字节,会造成越界,最大为32

};

看不太懂,就自己写了一段代码测试了一下(好吧,如何打印位运算是百度的):

int main() { a d; d.x=0;//分别等于0,1,2,3,4,5测试打印结果 d.y=0;//分别等于0,1,2,3,4,5测试打印结果 d.z=0;//分别等于0,1,2,3,4,5测试打印结果 cout<<bitset<sizeof(int)*8>(d.x)<<endl;// sizeof(int)结果为4,也就是四字节,一个字节8位,共32位。 cout<<bitset<sizeof(int)*8>(d.y)<<endl; cout<<bitset<sizeof(int)*8>(d.z)<<endl; return 0; }

d.x,d.y,d.z都为0时打印结果为:
C++中 形如int x:1;int x:2;int x:32(冒号后为1-32,32为最大值)的意思解释 - zerfew - Zerfew
d.x=d.y=d.z=1时,结果为:
C++中 形如int x:1;int x:2;int x:32(冒号后为1-32,32为最大值)的意思解释 - zerfew - Zerfew
d.x=d.y=d.z=2时,结果为:
C++中 形如int x:1;int x:2;int x:32(冒号后为1-32,32为最大值)的意思解释 - zerfew - Zerfew
  d.x=d.y=d.z=3时,结果为:
  C++中 形如int x:1;int x:2;int x:32(冒号后为1-32,32为最大值)的意思解释 - zerfew - Zerfew
d.x=d.y=d.z=4时,结果为:
  C++中 形如int x:1;int x:2;int x:32(冒号后为1-32,32为最大值)的意思解释 - zerfew - Zerfew
d.x=d.y=d.z=5时,结果为:
C++中 形如int x:1;int x:2;int x:32(冒号后为1-32,32为最大值)的意思解释 - zerfew - Zerfew
 所以我觉得应该是分配的32位,但以1或者2或者指定的位数为单位,将这个字节分组。
不过还是有点疑问的,就是   bitset<sizeof(int)*8> 这个语句指定了二进制显示的长度,本人有时间再进行测试分析。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值