1

输出是

x=1000300  y=1000000,  z=1000300

我可以理解我是如何得到 x 和 z 的,但是c 的y 输出没有意义。

 #include <stdio.h> 
 int main() 
 { int i=0; 
  float a = 100; 
  a = a*a*a*a*a;  

 float c = 3; 
 float x = 1000000*c + a; 
 float y = a; 
 float z = 0; 

  for (i=0; i<1000000; i++) 
  { y += c; 
    z += c; 
  } 

  z += a; 
  x /= 10000; 
  y /= 10000; 
  z /= 10000; 

 printf("x=%.0f  y=%.0f,  z=%.0f\n", x, y, z); 
 }
4

1 回答 1

5

in 的值y从 1E10 开始(从分配到a)。您将 3 添加到此一百万次。

问题是 afloat最多有 7 个有效十进制数字,因此您实际上不会y每次都更改,因此结果除以 10,000 是10,000,000 1,000,000 显示。

如果您使用 进行编码double,您会看到更接近您期望的结果。

于 2011-02-21T01:16:12.900 回答