首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于C++一个数组的有关问题.求高人指导

2013-08-04 
关于C++一个数组的问题.求高人指导我的目的是输出0.010.020.03到1.01。为什么下面的代码输出的前99项都是0,

关于C++一个数组的问题.求高人指导
我的目的是输出0.01  0.02  0.03到1.0

1。为什么下面的代码输出的前99项都是0,而第100项是1?其实我知道是x[i]=i/100是有问题,但不知道为什么有问题。

2。后来我将x[i]=i/100 改成x[i]=0.01+(0.01*i),就解决问题了。但我还很在意为什么x[i]=i/100究竟是哪里有问题,望指教。

代码如下 .
#include<iostream.h>
int main()
{
   float x[100];
   int i;
   for(i=0;i<=99;i++)
   {
      x[i]=i/100;
   }
   for(i=0;i<=99;i++)
   {
      cout << x[i] << endl;
   }
   return 0;
}

C++
[解决办法]
i / 100 
i 和 100 都是整形,所以按照整数来运算,i< 100的时候怎么算都是0,

(float) i / 100  或者   i/ 100.0f  
让其中1个是float型的,这样计算结果才是float
[解决办法]
1.定义了int的i且未强制转换float(i)/100,因此右值为int型,即0~99/100,结果均为0
  PS:win32 VS2008测试结果均为0,不知道你为什么会输出最后一项为1
2.0.01+(0.01*i) 为float型,因为类型的自动扩展。float赋给float自然能呈现目标的0.01~1
  但注意cout的内部处理只会输出1而非1.0,如需严格格式,可采用printf("%f", x[i]);

热点排行