#include<stdio.h>

main()
{
    int fahr;
    for(fahr = 300; fahr >= -40; fahr = fahr - 20)
        printf("%3.d %8.d\n ",fahr,(5.0/9.0) * (fahr - 32.0));
}

它打印等效值,但都是错误的。为什么会发生?

最佳答案

转换为摄氏度的表达式使用类型为 double 的常量,因此表达式的类型为 double 。因为您将 %d 格式说明符与 double 值一起使用,所以您会得到未定义的行为。

将第二个格式说明符更改为 %8.f,您将获得预期的输出。此外,将第一个格式说明符更改为 %3.1d,以便当 fahr0 时,它​​将打印值而不是空白。

printf("%3.1d %8.f\n ",fahr,(5.0/9.0) * (fahr - 32.0));

关于c - 为什么它不以从 300 到 -40 的相反顺序打印华氏高度和等效摄氏度的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35758870/

10-11 18:32