Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么从另一个已初始化的成员分配联合成员?_C++_Member_Unions - Fatal编程技术网

C++ 为什么从另一个已初始化的成员分配联合成员?

C++ 为什么从另一个已初始化的成员分配联合成员?,c++,member,unions,C++,Member,Unions,在未初始化的情况下声明变量将有一个垃圾值,因此在此程序中,我使用一个并集: union un { int value; char c; }; int main() { un x; x.c = 'A'; cout << x.value << endl; // garbage: ok } 联合国 { int值; 字符c; }; int main() { UNX; x、 c=‘A’; coutYourr是一个全局变量。这些变量被初始化

在未初始化的情况下声明变量将有一个垃圾值,因此在此程序中,我使用一个并集:

union un
{
    int value;
    char c;
};

int main()
{
    un x;
    x.c = 'A';
    cout << x.value << endl; // garbage: ok
}
联合国 { int值; 字符c; }; int main() { UNX; x、 c=‘A’;
coutYour
r
是一个全局变量。这些变量被初始化为零。
value
的第一个字节是
c
,其他字节是零


相反,
x
是一个局部变量,它们没有初始化。
value
的第一个字节也是
c
,但其他字节就像你所说的随机或垃圾。

我不确定这是链接问题的重复。是的,它是未定义的行为,因此“任何事情都可能发生”,但答案实际上解释了这些值不同的原因。也许可以修改标题,以突出问题的重点,即全局值和局部值之间的差异。@AnT:IMO这只是一个输入错误。我修正了它。
union un
{
    int value;
    char c;
}r;


int main()
{

    r.c = 'A';
    cout << r.value << endl; // 65! as we know the ASCII value of character 'A' is 65
}