gpt4 book ai didi

c - C 中的 union 赋值

转载 作者:行者123 更新时间:2023-11-30 20:09:50 24 4
gpt4 key购买 nike

给出以下 union 定义:

typedef union{
int i;
char ch;
float f;}record;



record a;
//a.i = 10;
a.ch = 'A';
//a.f = 10.56;
printf("printing a.i: %p \n", a.i);
printf("printing a.ch: %c \n", a.ch);
printf("printing a.f: %f \n", a.f);
return 0;

我得到以下输出:

打印人工智能:65
打印 a.ch: A
打印 a.f: 0.000000

为什么 a.i 不打印 0(未定义整数的默认值),而是打印“A”的 ASCII 值。这是否可以访问a.ch?

最佳答案

你得到65,代码'A' ,因为字段 ichar 共享其部分空间字段。

总体而言,您的程序的行为与本地 union未定义,因为您阅读了整个 int只写了与 char 重叠的部分之后.

正在初始化union会解决这个问题。但是,不能保证读取的低字节会是 65。此行为是特定于实现的。

关于c - C 中的 union 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725251/

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