“i”: 未声明的标识符

int moveup(int num[9]){//空格上移
for(int i=0;i<9;i++)
if(num[i]==0) break;
if(i<3) return 0;
else {
num[i]=num[i-3];
num[i-3]=0;
return 1;
}
}
为什么在第四行报错“i”: 未声明的标识符
求高人指点??

先告诉你吧,确实没有定义。
因为你前面定义的int i,仅仅再for的循环体内,也就是到了break;下面就用不了了,这是局部变量的规则。
那么你下面还要用i,但是这个i,最前面没有定义,所以报错。
要解决,最好是在最前面定义,除非你想用这种局部变量。追问

int moveup(int num[9]){//空格上移
for(int i=0;i<9;i++)
if(num[i]==0) break;
int i;
if(i<3) return 0;
else {
num[i]=num[i-3];
num[i-3]=0;
return 1;
}
}改成这样后有个警告: warning C4700: 使用了未初始化的局部变量“i”
求解。。

追答

这说明你还是没有理解C语言的标准。
C语言要求所有变量的定义必须在所有程序语句的执行前面一次性定义,除非使用你所用的局部变量。你把它提到for循环之前。
至于你将来遇到的局部变量同名的问题,你再慢慢解决吧。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-05
int moveup(int num[9]){//空格上移
for(int i=0;i<9;i++)//---------------------i申明------------------------------------------------------------
if(num[i]==0) break;//-------------------i作用域结束------------------------------------------------
if(i<3) return 0;//此处(及以后)引用 导致未申明
else {
num[i]=num[i-3];
num[i-3]=0;
return 1;
}
}
第2个回答  2011-10-05
在第二行,int i;
相似回答