循环无法达到极限

时间:2016-03-09 12:48:30

标签: c for-loop compiler-optimization

我想理解为什么这个for不会将其执行停止为10.请参阅代码:

#include <stdio.h>

int main()
{
  float i;
  for (i = 0.0; i <= 10; i += 0.01)
    printf("Iteration %g\n", i);

  return 0;
}

最新的迭代是:

  

迭代9.96013
  迭代9.97013
  迭代9.98013
  迭代9.99013

为什么会出现这种情况?

2 个答案:

答案 0 :(得分:0)

在上一次迭代中,您会看到Iteration 9.99013,因为如果循环再次迭代,i将等于10.00013,即大于10,即循环条件。只要条件满足,for循环才会继续。

正如@WeatherVane指出的那样,你应该看看this question,这解释了为什么你在i变量的末尾看到了额外的0.00013。

答案 1 :(得分:0)

  

10.00013&lt; = 10条件为false因此控件退出for循环