LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 860|回复: 8

请问:定义了6 个数为何多打印了一个数(在数组中)

[复制链接]
发表于 2006-6-3 12:56:48 | 显示全部楼层 |阅读模式
代码如下 :
  1. #include <iostream>

  2. using namespace std;



  3. int main(){

  4.    int i;
  5.    double sors[6]={ 0.5,1.5,2.5,3.5,4.5,5.5};

  6.     for (i=0; i<=6;i++ ) {
  7.         cout <<sors[i] << "   ";
  8.        }
  9.      if(i=6)
  10.        cout <<  endl;
  11.    return 0;
  12.   }
复制代码

运行结果想要 : 0.5   1.5   2.5   3.5   4.5   5.5  

实际成为了 : 0.5   1.5   2.5   3.5   4.5   5.5   1.43231e-313

不知什么原因? 请诸位赐教!!
发表于 2006-6-3 13:14:11 | 显示全部楼层
数数数组的元素个数吧,再掐掐手指0~6是几个数?
建议编译的时候打开-Wall,看看警告,就会发现还有其他的错误。
回复 支持 反对

使用道具 举报

发表于 2006-6-3 14:48:03 | 显示全部楼层
我很真诚的建议楼主,放弃C吧,学点python什么的好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-3 19:56:12 | 显示全部楼层
Post by x11
我很真诚的建议楼主,放弃C吧,学点python什么的好了


学的少,让大家见笑了。即然我已经开始学了,就决不轻言放弃。

一切就从C++ 开始 。明天很快就会来到,一切都会有的。

我爱linux,也爱c++。里面的东东太美妙了!!我实在不忍心放弃呀。
回复 支持 反对

使用道具 举报

发表于 2006-6-4 15:00:28 | 显示全部楼层
我觉得搂主的意思可能是:
  1. #include <iostream>
  2. using namespace std;
  3. int main(){
  4.    int i;
  5.    double sors[6]={ 0.5,1.5,2.5,3.5,4.5,5.5};
  6.     for (i=0; i<=6;i++ ) {
  7.        if(i==6)
  8.        {cout <<  endl;
  9.    return 0;}
  10.         cout <<sors[i] << "   ";
  11.        }
  12.   }
复制代码
回复 支持 反对

使用道具 举报

发表于 2006-6-4 15:46:31 | 显示全部楼层
其实,只要把i<=6中的等号移动到i=6这,分别变成i<6和i==6就行了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-4 21:18:02 | 显示全部楼层
实际只要将如下的6改为5就可以了。
  1. for (i=0; i<=6;i++ ) {
  2.         cout <<sors[i] << "   ";
  3.        }
  4.      if(i=6)
复制代码
二楼说的已经很明白了。当然还可以这样改:
  1. for (i=0; i<6;i++ ) {
  2.         cout <<sors[i] << "   ";
  3.        }
  4.      if(i=5)
复制代码
原因是在数组元素中,以0开始计数,到5就达到
  1. double sors[6]={ 0.5,1.5,2.5,3.5,4.5,5.5};
复制代码
中定义的六个了。
C++默认的情况下,一旦多于定义数的话,会将数组外的给覆盖。我理解的对吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-4 21:18:02 | 显示全部楼层
实际只要将如下的6改为5就可以了。
  1. for (i=0; i<=[size=+1]6;[/size]i++ ) {
  2.         cout <<sors[i] << "   ";
  3.        }
  4.      if(i=[size=+1]6[/size])
复制代码
二楼说的也已经很明白了。当然还可以这样改:
  1. for (i=0; [size=+1]i<[/size]6;i++ ) {
  2.         cout <<sors[i] << "   ";
  3.        }
  4.      if(i[size=+1]=5[/size])
复制代码
原因是在数组元素中,以0开始计数,到5就达到
  1. double sors[6]={ 0.5,1.5,2.5,3.5,4.5,5.5};
复制代码
中定义的六个了。
C++默认的情况下,一旦多于定义数的话,会将数组外的给覆盖。我理解的对吧。
回复 支持 反对

使用道具 举报

发表于 2006-6-5 14:19:33 | 显示全部楼层
楼主还没注意==和=
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表