关于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]);