gpt4 book ai didi

c - 这个 printf 在这个程序中是如何工作的 - c 中的说明?

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:42 25 4
gpt4 key购买 nike

需要一些说明...

为什么我得到 2.50 0 0 0.0 作为输出?

#include<stdio.h>
int main()
{
float a=5.0,b=2.0;
printf("%f %d\n",a/b,a/b);
printf("%d %f",a/b,a/b);
return 0;
}

最佳答案

您正在导致未定义的行为,因为a/b 的类型(提升为)double,这与格式不匹配说明符 %d(需要一个 int)。

(您看到 0 的原因可能是因为您碰巧访问的 sizeof(int) 字节全部为零,是(非常短的)尾数的一部分像 2.5 这样的简单数字,您的平台以小端顺序将 float 存储为 IEEE754:

    |        <-- * -->         // * = sizeof(int)
400 | 4 0000 0000 0000 // == 2.5
S+E | Mantissa

尝试 2./5. 以查看其他一些结果。)

关于c - 这个 printf 在这个程序中是如何工作的 - c 中的说明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9778375/

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