| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:想不明白的一个问题
只看楼主 加入收藏
恶魔会哭泣
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-25
收藏
 问题点数:0 回复次数:10 
想不明白的一个问题

求教:

下面的代码为什么会出现数组的值发生改变?temp=a[9-n];只是把值给temp,并没有改变过数组里面的

值啊,怎么前后输出数组a中的值不一样呢?此代码并没有实现什么,只是我不明白为什么。

#include"iostream.h"
int main()
{
int n,temp,a[9];
for(int i=1;i<=9;i++)
{
a[i]=i;
}
for(i=1;i<=9;i++)
{
cout<<a[i];
}

cin>>n;
temp=a[9-n];

for(i=1;i<=9;i++)
{
cout<<a[i];
}
cout<<endl;

return 0;
}

搜索更多相关主题的帖子: include 
2007-08-25 23:53
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
数组,几乎所有的跟坐标相关的记数都从0开始。
以后数数都 0 1 2 ……这样就好了。

Fight  to win  or  die...
2007-08-26 01:27
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
收藏
得分:0 
seems you are really a beginner --- in C/C++, index starts at 0, not 1.

study more, brother.


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-08-26 08:20
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 

发现个特别有意思的事,当我简单的把i的初值改为0时,(当然,我没把i<=9改为i<9,这样会越界的)
但程序却有个有意思的结果,我以前没遇到过,不知是为什么?
#include<iostream>
using namespace std;
int main()
{
int n,temp,a[9];
for(int i=0;i<=9;i++)
{
a[i]=i;
}
for(i=0;i<=9;i++)
{
cout<<a[i];
}

cin>>n;
temp=a[9-n];//真的不起作用????

for(i=0;i<=9;i++)
{
cout<<a[i];
}
cout<<endl;

return 0;
}
我输入4运行结果却是:
0123456789
4
0123456785

[此贴子已经被作者于2007-8-26 9:18:30编辑过]


2007-08-26 09:16
WenRick
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-7-18
收藏
得分:0 
回复:(blueboy82006)发现个特别有意思的事,当我简单...
C++数组的index从0开始,你定义的是a[9] 只有a[0]-a[8]是有效数字,a[9]的值是不确定的,数组越界了。
2007-08-26 09:25
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
数组越界了是不会出现报错的,没有这种异常处理机制。
但是会导致程序出现问题,甚至崩溃,大程序中还很难debug。

Fight  to win  or  die...
2007-08-26 09:43
alan823
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-26
收藏
得分:0 
太深奥了!调试的时候是看不到a[9]的值的!
2007-08-26 10:00
恶魔会哭泣
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-25
收藏
得分:0 
感谢大家的教导,经过大家的解说得出问题所在,也就是因为数组下标是从0开始,而我的数组是定义为a[9],也就是说只有a[0],a[1],a[2],a[3].......a[8](能存储9个数);而当我用for循环的时候把i=9的时候给了数组a的下标,而数组a并没有a[9]这个地址,所以不能成功把9赋值给a[9]地址,所以用到的a[9]的值是随机的。

不知道这样总结可以不~~~~~~
2007-08-26 13:13
fangzhiya
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-27
收藏
得分:0 
a[9]的值并不是随机的,好像是产生了覆盖.
2007-08-27 21:32
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
如果你是用VC6,那么a[9]其实就是temp



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-27 21:35
快速回复:想不明白的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018604 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved