我对编程非常陌生,只是一个初学者级别(仍然非常新手且容易出错:)
我的问题如下。我正在用C编写一个程序,将27华氏度转换为摄氏度。
代码如下:
int main (void)
{
float F = 27;
float C = (F - 32) / 1.8;
printf ("27 degrees Fahrenheit is %i degrees Celsius ", C);
return 0;
}
获得以下输出:
27 degrees Fahrenheit is -2147483648 degrees Celsius
我没想到结果那么冷。我的计算器应该是-2.77。可能有什么问题?由于这样的计算,世界可能会冻结! ))
我想这是我要问的基本原理,但听起来很有意思。感谢您的帮助。
答案 0 :(得分:3)
printf ("27 degrees Fahrenheit is %f degrees Celsius ", C);
%i
是int
的格式说明符。要传递double
或float
,您需要%f
。
答案 1 :(得分:0)
在printf()
中,您指定C
指向的内存应该被解释为它是一个int(32位或64位,具体取决于您的系统和编译器)。但存储在该内存位置的实际值为float
。
因此printf()
会混淆并输出用于int
float
值