我在编写这个程序时发现,使用 %f 表示 double 类型和使用 %d 表示 float 类型得到的结果完全不同。 有谁知道为什么会出现这种情况吗?
int main ()
{
float a = 1F;
double b = 1;
printf("float =%d\ndouble= %f", a, b);
}
这是输出结果
float = -1610612736
double = 190359837192766135921612671364749893774625551025007120912096639276776057269784974988808792093423962875123204096.0000
printf
函数(或POSIX规范中的fprintf()
)以了解如何正确使用printf()
,以及关于浮点参数传递给可变参数函数的方式,请参阅§6.5.2.2 函数调用 ¶6和7。像GCC和Clang这样的现代C编译器可以提供广泛的格式不匹配诊断 - 您应该启用编译警告。 - Jonathan Leffler