有这样简单的C++指令:
int f1 = 3238;
printf_s("Printf_1.cpp 1 - float: %dn", f1);
printf_s("Printf_1.cpp 2 - float: %fn", f1);
第二个printf_s
的输出是0.000000
。我的问题是为什么没有3238.000000
?3238
的整数部分发生了什么?
PS。我的规格:Win 10,微软Visual Studio社区2019
printf
需要变量参数类型来匹配您的格式说明符。特别是,%f
希望您通过double
,而您通过int
。printf
以这种方式解释int
的字节,因此它打印出0.000000
,但通常情况下,这种组合不会产生什么结果(这被称为"未定义的行为"(。您需要做的是向double:printf("%f", (double) f1)
添加显式类型转换。