我使用代码块。
代码为:
printf("%.1f", 1);
程序可以运行,输出为0.0
。我想知道为什么。
`
答案 0 :(得分:7)
将其更改为:
printf("%.1f", 1.0);
f
转换说明符需要double
类型的参数,但您传递的int
值(1
的类型为int
)。将错误类型的参数传递给printf
会调用未定义的行为。
答案 1 :(得分:4)
使用错误的格式说明符调用未定义的行为。您可能会得到预期或意外的结果。如果您使用%d
,则使用printf
代码,因为传递给int
的参数为1
类型,或将1.0
更改为%f
。
如果转换规范无效,则行为未定义。 282)如果任何参数是 不是相应转换规范的正确类型,行为是 未定义。
答案 2 :(得分:0)
格式不正确,你应该给一个float或一个double作为printf函数的第二个参数。 gcc编译器还会对程序员的错误发出警告。
printf("%.1f",1.23);
输出:
1.2
小心这些错误。祝你好运!