【发布时间】:2014-03-23 03:22:29
【问题描述】:
#include<stdio.h>
int main()
{
union emp;
union emp{
int age;
char name[2];
};
union emp e1={512};
printf("%d,%d,%d",e1.age,e1.name[0],e1.name[1]);
return 0;
}
我在这里尝试创建一个联合并初始化它的第一个成员,即“int age”。据我所知,ANSI C 编译器支持这一点。我的问题是为什么我得到像“512,0,2”这样的输出。如果我用 513、514 和 768 替换 512,我会得到以下输出。 "513,1,2", "514,2,2", "768,0,3", 现在我可以看到 e1.name[0] 正在存储(数字)%256,而 e1.name[1] 正在存储(数字)/256。 如果解释为什么以及如何发生这种情况,将不胜感激。 谢谢大家。
【问题讨论】: