-1

可能重复:
C++:“float”的 printf() 格式规范是什么?

我对编程完全陌生,只是入门级别(仍然非常新手且容易出错:)

我的问题如下。我正在用 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华氏度是-2147483648摄氏度

没想到结果这么冷。我的计算器应该是-2.77。可能有什么问题?由于这样的计算,世界可能会冻结!))

我想这是我要问的基本原理,但对我来说听起来很有趣。感谢你的帮助。

4

2 回答 2

4
printf ("27 degrees Fahrenheit is %f degrees Celsius ", C);

%i是 的格式说明符int。对于传递 adouble或 a float,您需要%f.

于 2012-12-14T22:04:11.900 回答
0

在您的printf()文件中,您指定C指向的内存应该被解释为一个 int(32 位或 64 位,具体取决于您的系统和编译器)。但存储在该内存位置的实际值是float.

所以printf()会感到困惑并输出int内存中用于的位的值float

于 2012-12-14T22:06:09.733 回答