尝试以十六进制格式打印 float :
int main() {
float a = 1.1;
printf("%f %X\n", a, a);
}
出于某种原因 printf 返回:
1.100000 A878DAC8 // hex number is random every time
应该是3F8CCCCD。为什么会有这样的行为?
最佳答案
Govind Parmar 的回答中给出了对观察到的行为的解释。请注意,假设使用 32 位整数和 float ,您可能会通过此修改后的程序获得预期的行为:
#include <stdio.h>
#include <string.h>
int main() {
int i;
float a = 1.1;
memcpy(&i, &a, sizeof(i));
printf("%f %X\n", a, i);
return 0;
}
输出:1.100000 3F8CCCCD
关于c - printf 十六进制格式的 float 返回随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57515036/