我正在研究这个程序,我注意到使用 %f 表示双精度型,使用 %d 表示浮点型给了我完全不同的东西。有人知道为什么会发生这种情况吗?
int main ()
{
float a = 1F;
double b = 1;
printf("float =%d\ndouble= %f", a, b);
}
这是输出
float = -1610612736
double = 190359837192766135921612671364749893774625551025007120912096639276776057269784974988808792093423962875123204096.0000
%d
代表十进制,它需要一个类型的参数int
(或者一些较小的有符号整数类型,然后被提升)。浮点类型float
and double
两者都以相同的方式通过(晋升为double
)并且他们都使用%f
。在C99中你还可以使用%lf
来表示较大的尺寸double
,但这纯粹是装饰性的(请注意,scanf
没有促销发生,这实际上会产生影响)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)