1.作用域不明确,for循环里定义新的变量时,循环一定要加大括号。
[cpp] view plaincopy
int main()
{
for(int i=0;i<5;i++)
int a =10;
return 0;
}//编译不通过。
2.for条件后面不要随便加;号
3.循环体里面的变量作用域
[cpp] view plaincopy
int main()
{
for(int i=0;i<5;i++,a++)//逗号运算符,可连接多个小语句
{
int a =10;
}
return 0;
}
此代码编译不通过,因为定量a的作用域只限于循环体内,执行完循环体后,a的内存就释放了,导致for条件里面的a没有定义。
4.循环体里面的变量定义
[cpp] view plaincopy
int main()
{
for(int i=0;i<5;i++)
{
int i =10;
printf("%d\n",i);
}
return 0;
}
此语句可以编译成功,输出结果为5次10,因为循环体里面的新变量i,每次循环执行完毕后后释放,不与条件里面的i冲突。
5.变量的作用域比较
[cpp] view plaincopy
int main()
{
int a =10 ;
for(int i=0,a=9;i<5;i++)
{
a=8;
printf("%d\n",a);
}
return 0;
}
此段代码里面定义了三个a,但是每个a的作用域不一样,执行语句最先找到a=8,若循环体里没有a=8,则找到a=9,若for条件里面没有a=9,则找到最外层的a=10. |
|