【发布时间】:2011-04-30 14:40:14
【问题描述】:
我有一个关于 C 语言联合的问题。 在联合中声明的变量将共享相同的内存,好的,我明白了。 例如,
union student {
int i;
int j;
}x;
我们如何访问 i 和 j?
如果我们有: x.i = 1;
然后我们printf("%d",j);
会发生什么?编译器错误?
好的,那么下面的情况呢:
union student {
int i;
float j;
}x;
如果我们分配 x.i = 2; x.j 的值是多少?
【问题讨论】:
-
不,它不会编译,除非你的意思是
print("%s", x.j); -
@ratzip 你为什么不自己试试呢? :)
-
@fardjad,我试过了,但我不知道联合是如何工作的!
-
@fardjad:对于一种像 C 一样有很多陷阱的语言,通过实验来学习语言的局限性和语义并不是一个好方法。
-
@ratzip,我的回答也解决了您的更新问题。在某种程度上,我现在会更新更多细节。