gpt4 book ai didi

c - printf 中的变量强制转换为 double 会产生随机输出

转载 作者:行者123 更新时间:2023-11-30 18:21:34 27 4
gpt4 key购买 nike

我试图查看 float 的十六进制表示形式,并使用 gcc-4.9.2 编译了此代码:

#include <stdio.h>

int main()
{
double i = 100;

printf("%f %x\n", i, (double)i);

return 0;
}

我惊讶地发现每次运行代码时打印出来的十六进制值都会发生变化。到底是怎么回事?如何安全地打印 float 的十六进制表示形式?

最佳答案

%x 格式说明符需要一个 unsigned int 类型的参数。您给它一个 double 类型的参数。该行为是未定义的,这意味着就 C 标准而言,任何事情都可能发生 - 包括更改相同格式字符串中其他说明符的输出。

要打印 float 的十六进制表示形式,请将其复制到 unsigned char 数组并打印该数组的元素。

关于c - printf 中的变量强制转换为 double 会产生随机输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40661972/

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