#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
,以便当 fahr
为 0
时,它将打印值而不是空白。
printf("%3.1d %8.f\n ",fahr,(5.0/9.0) * (fahr - 32.0));
关于c - 为什么它不以从 300 到 -40 的相反顺序打印华氏高度和等效摄氏度的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35758870/