关于联合体的问题!

sentball 2007-04-26 12:08:20
union a
{
int b;
struct k
{
int x:2;
int y:3;
int z:3;
};
k c;
};
void main()
{
a a;
a.b = 100;
cout << a.c.x << ","<< a.c.y << ","<< a.c.z << endl;
}

输出为什么是:0,1,3
...全文
196 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fallwindlotus 2007-04-26
  • 打赏
  • 举报
回复
自己看吧!我也上了一课!
http://dev.yesky.com/374/2645874.shtml
COBELL 2007-04-26
  • 打赏
  • 举报
回复
从调试结果来看,编译器在调试的时候给x,y,z赋的值就是0,1,3。所以打印出来的结果也就是0,1,3。如果要让其打印结果为2,3,3的话可以这样写。
union a
{
int b;
struct k
{
int x;
int y;
int z;
};
k c;
};
void main( )
{
a a;
a.b = 100;
a.c.x = 2;
a.c.y = 3;
a.c.z = 3;
cout << a.c.x << ","<< a.c.y << ","<< a.c.z << endl;
}
msgsnd 2007-04-26
  • 打赏
  • 举报
回复
10就是00,001,011
taodm 2007-04-26
  • 打赏
  • 举报
回复
不懂位域?google之。
记住位域是和CPU/编译器紧密相关的,它的知识基本不具看推广性。
sirguan 2007-04-26
  • 打赏
  • 举报
回复
谭浩强的书上有讲

65,213

社区成员

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

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