在printf_s函数中以浮点形式输出整数



有这样简单的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.0000003238的整数部分发生了什么?

PS。我的规格:Win 10,微软Visual Studio社区2019

printf需要变量参数类型来匹配您的格式说明符。特别是,%f希望您通过double,而您通过intprintf以这种方式解释int的字节,因此它打印出0.000000,但通常情况下,这种组合不会产生什么结果(这被称为"未定义的行为"(。您需要做的是向double:printf("%f", (double) f1)添加显式类型转换。

最新更新