union 输出结果

还不晚 2011-11-18 08:37:11
#include <stdio.h>

union
{
int i;
char x[2];
}a;

int main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d", a.i);
return 0;
}
请问结果是多少,怎么得来的,谢谢
...全文
91 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qwer_boo 2011-11-18
  • 打赏
  • 举报
回复
大端小端 共享内存
goodboyxh 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keiy 的回复:]
a.i=(a.x[1]<<8)+a.x[0]; 1<<8=256+10=266
不过不同编译器对齐会不同,但32位的话可能结果会不同(另外两个字节可能不为0)
[/Quote]

3楼正解。要注意:另外2个字节,是否为0.
luciferisnotsatan 2011-11-18
  • 打赏
  • 举报
回复
需要知道大小端和int多大,才能知道结果。不然不确定
柯本 2011-11-18
  • 打赏
  • 举报
回复
a.i=(a.x[1]<<8)+a.x[0]; 1<<8=256+10=266
不过不同编译器对齐会不同,但32位的话可能结果会不同(另外两个字节可能不为0)

無_1024 2011-11-18
  • 打赏
  • 举报
回复
看机器 这个是测试机器是大端还是小端的代码
bdmh 2011-11-18
  • 打赏
  • 举报
回复
这个要分大小端的,int和char公用一块内存

64,654

社区成员

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

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