【发布时间】:2015-06-05 08:16:36
【问题描述】:
我遇到了这个关于 C 编程语言的客观问题。以下代码的输出应该是0 2,但我不明白为什么。
请解释初始化过程。代码如下:
#include <stdio.h>
int main()
{
union a
{
int x;
char y[2];
};
union a z = {512};
printf("\n%d %d", z.y[0], z.y[1]);
return 0;
}
【问题讨论】:
-
你得到的意外输出是什么?
-
@Peter Mortensen 您的编辑颠倒了问题的含义!应该是
The output is supposed to be 0 2. I dont' get why! -
@edc65 没错。我试图解决这个问题,但我建议的编辑stackoverflow.com/review/suggested-edits/8336900 被拒绝了。如果你也想试试,说不定你的运气会比我好……
-
请注意,printf() 语句的输出会有所不同,具体取决于底层硬件架构是大端还是小端。输出可能是(假设是 32 位或 64 位架构)(小端序)“0 2”或(大端序)“0 0”。
标签: c initialization unions