【发布时间】:2016-05-13 22:41:55
【问题描述】:
#include <stdio.h>
union Data_u
{
long x;
char ch[20];
};
main()
{
union Data_u data;
printf("%ld\n", sizeof(data));
}
我应该知道这段代码会输出什么,但我想我不明白如何正确计算联合的大小。我做了x(4 byte) + 20 = 24 的大小。但这是不正确的。谁能告诉我哪里出错了?
【问题讨论】:
-
请将您的代码作为文本发布在问题中。
-
欢迎来到 Stack Overflow。请尽快阅读About 页面。当您发布代码时,请将其包含在问题中(而不是,或者以及,非现场链接)。请查看结构填充和对齐;您的问题的要点不太可能在 SO 上没有得到多次回答。
-
(a) 你得到了什么结果? (b) 您是在 32 位还是 64 位系统上工作?在 32 位系统上,您可能会得到 20 的结果;在 64 位系统上,您可能会得到 24 的结果,但不是因为您给出的原因。
-
这不是一个结构,它是一个联合。你的问题应该说明你得到的实际结果。
-
我得到了 24 的结果。正确的是 20。我会看看那个问题,抱歉重复。
标签: c