gpt4 book ai didi

c - 无法理解 C 中 union 程序的输出

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:21 24 4
gpt4 key购买 nike

我知道 C 中 union 的基本属性,但仍然无法理解输出,有人可以解释一下吗?

#include <stdio.h>

int main()
{
union uni_t{
int i;
char ch[2];
};
union uni_t z ={512};
printf("%d%d",z.ch[0],z.ch[1]);
return 0;
}

运行这个程序时的输出是

02

最佳答案

union a
{
int i;
char ch[2];
}

这声明了一个类型union a,其内容(即该类型变量的内存区域)可以或者整数(a.i) 一个 2 元素字符数组 (a.ch)。

union a z ={512};

这定义了一个 union a 类型的变量 z 并初始化它的第一个成员(恰好是 int 类型的 a.i ) 到 512 的值。 (Cantfindname 有它的二进制表示。)

printf( "%d%d", z.ch[0], z.ch[1] );

这从 a.ch 中获取第一个字符,然后是第二个字符,并打印它们的数值。同样,Cantfindname 讨论字节序及其对结果的影响。基本上,您正在逐字节分解 int

而且整个 shebang 显然假设 sizeof( int ) == 2,这在桌面计算机上已经不成立了......相当长一段时间,所以您可能想要查看更新的教程。 ;-)

关于c - 无法理解 C 中 union 程序的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27984583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com