gpt4 book ai didi

c - union 与值(value)

转载 作者:行者123 更新时间:2023-12-03 23:47:12 25 4
gpt4 key购买 nike

#include<stdio.h>
typedef union{
char a;
double num;
}uni;
int main(){
uni name;
name.num=5.8234;
printf("%lf\n",name.num);
name.a='b';
printf("%lf %c\n",name.num,name.a);
printf("\n");

}

为什么双数值保持不变?

输出:
5.823400
5.823400 b

最佳答案

假设您的系统对 double 使用 IEEE754 double 浮点格式。 ,代表num包含 1 个符号位,然后是 11 位的指数和 52 位的尾数。还假设您的系统使用小端字节序,char在 union 中覆盖了 double 中的最低有效字节,这意味着当您更改 a 时,最低有效数字会发生变化.

您看不到差异,因为 %f默认情况下只显示 6 位十进制数字,而 double这种表示法有大约 16 个有效的十进制数字。

如果将格式说明符更改为 %.16f你会看到不同之处。

5.8234000000000004
5.8234000000000794 b

关于c - union 与值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61962508/

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