【问题标题】:Anomaly in printf() function [duplicate]printf()函数异常[重复]
【发布时间】:2019-12-02 05:02:26
【问题描述】:

在处理 int 和 float 数字时,我在 print 函数中看到异常行为。

float y = 9/5;
printf("%f", y);

printf("%f", 9/5);

第一个打印语句输出 1.000000,这是可以接受的,而其他输出 0.000000。 为什么两种情况下的输出不同?

【问题讨论】:

  • 由于9/5的两个操作数都是整数,所以除法的结果也是整数(1)。 %f 转换说明符需要 float 或 double 操作数。
  • 重复是printf("%f", 9/5);的第一个谷歌搜索结果

标签: c floating-point printf


【解决方案1】:

9/5是一个整数,它的值为1。

printf("%f", 9/5); 是未定义的行为,因为 %f 需要 double,但您提供了 int。

尝试printf("%f", 9.0/5);,输出将是您所期望的。

更一般地说:如果printf 的格式说明符与参数不匹配,则行为未定义;在大多数情况下,您会得到意想不到的输出。

【讨论】:

  • 大声笑,这个问题是一个价值精确的重复:D
猜你喜欢
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 2012-09-26
  • 1970-01-01
  • 2011-06-19
相关资源
最近更新 更多