繁体   English   中英

为什么printf(“%。1f”,1)输出0.0

[英]Why printf(“%.1f”, 1) output 0.0

我使用代码块

当代码是:

printf("%.1f", 1);

程序可以运行,输出为0.0 我想知道为什么。 `

更改为:

printf("%.1f", 1.0);

f转换说明符需要一个double类型的参数,但是您要传递一个int值( 1int类型)。 将错误类型的参数传递给printf调用未定义的行为。

使用错误的格式说明符会导致未定义的行为 您可能会得到预期的结果或意外的结果。 使用%d代替,因为传递给printf的参数是int类型,或者如果使用%f则将1更改为1.0

C11:7.21.6(p9):

如果转换规范无效,则行为未定义。 282)如果任何参数不是对应转换规范的正确类型,则行为未定义。

格式不正确,您应该给floatf或double作为printf函数的第二个参数。 gcc编译器还会针对程序员的此类错误给出警告。

 printf("%.1f",1.23);

输出:

 1.2

请谨慎对待此类错误。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM