gpt4 book ai didi

c - 为什么 printf 打印错误的值?

转载 作者:行者123 更新时间:2023-11-30 16:25:31 24 4
gpt4 key购买 nike

为什么使用 printf("%f\n", myNumber) 打印 int 时得到错误的值?

我不明白为什么使用 %d 打印得很好,但使用 %f 却不行。难道不应该只是添加额外的零吗?

int a = 1;
int b = 10;
int c = 100;
int d = 1000;
int e = 10000;

printf("%d %d %d %d %d\n", a, b, c, d, e); //prints fine
printf("%f %f %f %f %f\n", a, b, c, d, e); //prints weird stuff

最佳答案

当然它会打印“奇怪”的东西。您传递的是 int,但告诉 printf 您传递的是 float。由于这两种数据类型具有不同且不兼容的内部表示,因此您将得到“乱码”。

当您将变量传递给像 printf 这样的变量函数时,没有“自动转换”,值将作为它们实际的数据类型传递到函数中(或升级为更大的兼容类型)某些情况)。

您所做的有点类似于:

union {
int n;
float f;
} x;

x.n = 10;

printf("%f\n", x.f); /* pass in the binary representation for 10,
but treat that same bit pattern as a float,
even though they are incompatible */

关于c - 为什么 printf 打印错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53359363/

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