C 联合与价值

C 联合与价值,c,C,假设您的系统对double使用IEEE754双精度浮点格式,num的表示形式包含1个符号位,后跟11位表示指数,后跟52位表示尾数。另外,假设您的系统使用小端字节排序,则union中的char覆盖了double中的最低有效字节,这意味着当您更改a时,最低有效位会发生变化 您看不到差异,因为默认情况下,%f仅显示6位十进制数字,而使用此表示法的双精度约有16位有效十进制数字 如果将格式说明符更改为%.16f,您将看到差异 5.823400 5.823400 b 您使用的是小尾数系统,更改字符只会

假设您的系统对
double
使用IEEE754双精度浮点格式,
num
的表示形式包含1个符号位,后跟11位表示指数,后跟52位表示尾数。另外,假设您的系统使用小端字节排序,则union中的
char
覆盖了
double
中的最低有效字节,这意味着当您更改
a
时,最低有效位会发生变化

您看不到差异,因为默认情况下,
%f
仅显示6位十进制数字,而使用此表示法的
双精度
约有16位有效十进制数字

如果将格式说明符更改为
%.16f
,您将看到差异

5.823400
5.823400 b

您使用的是小尾数系统,更改字符只会更改双精度尾数的最低有效位。使用更高的预设值打印双精度,例如,
“%.20lf”
,以查看差异。
5.823400
5.823400 b
5.8234000000000004
5.8234000000000794 b