可能重复:
How is conversion of float/double to int handled in printf?
main()
{
printf("%f",1);
}
我预期的输出是1.000000
,即 int 1 被提升为加倍1.000000 ,但它给出了0.000000
。为什么会这样?
答案 0 :(得分:4)
如果为格式化指令提供了不匹配的参数(在本例中为int
到%f
),则生成的行为为 undefined 。
此问题或其中的一些变体会定期出现,有关示例/更多信息,请参阅What is printf's behaviour when printing an int as float?和problem with printf function?。