我有一个 union 类型的数组,包含三个整数(每个 4 个字节)、一个 float (4 个字节)、一个 double (8 个字节)和一个字符(1 个字节)。
如果我将 0x31313131 分配给三个整数元素中的每一个,然后打印 union 的字符,我将得到数字 1。为什么?
我不明白输出我知道 3 0x31313131 的位是 001100010011000100110001001100010011000100110001001100010011000100110001001100010011000100110001
最佳答案
因为“1”==0x31。您将其打印为字符,而不是整数。
因为它是一个 union ,所以所有的 int 和 char 共享相同的内存位置(在这种情况下,float 和 double 无关紧要)。因此,将 0x31313131 分配给 int 确实会影响 char 值——这没什么好混淆的。
关于c - 内存布局 - C union ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834395/