使用printf和%d作为格式说明符,并将float作为参数(例如2.345),它将打印1546188227。所以,我知道这可能是由于单点浮点精度格式转换为简单的十进制格式。但是当我们用%d作为格式说明符打印2.000时,为什么它只打印0?
请帮忙。
最佳答案
格式说明符%d
只能与int
类型(和兼容类型)的值一起使用尝试将%d
与float
或任何其他类型一起使用会产生未定义的行为。这是这里唯一真正适用的解释从语言的角度来看,你看到的输出基本上是随机的而且你根本不能保证得到任何输出。
如果您仍然有兴趣调查您看到的输出的特定原因(不管它有多小的意义),那么您将必须执行特定于平台的调查,因为实际行为严重依赖于各种实现细节你甚至没有在你的帖子中提到你的平台。
在任何情况下,请注意,不可能将float
值作为变量参数传递给变量函数。在这种情况下,float
值总是转换为double
并作为double
传递。所以在您的情况下,您试图打印的是double
值不过,行为仍然没有定义。