关于c++作用域问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 12:48:17
for(int i=0;i<n;i++)
for(int j=0;i<n;j++){
\.....\
}
与for(int i=0;i<n;i++){
for(int j=0;i<n;j++)
\.....\
}
有什么区别

看你\...\里的东西是多少行了,只有一行,没区别,如果更多,比如两行,就变成了:
for(int i=0;i<n;i++)
for(int j=0;i<n;j++){
a;
b;
}
for(int i=0;i<n;i++){
for(int j=0;i<n;j++)
a;
b;
}
从缩进就可以看出,前者a, b在内循环,后者a在内,b在外

有问题啊,判断条件都是“i<n”这一点,就不合逻辑。

如果改成:
for(int i=0;i<n;i++)
for(int j=0;j<n;j++){
\.....\
}
与for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
\.....\
}
那麼:
\.....\如果是指两个语句,这两段代码完全不一样,例如:
for(int i=0;i<n;i++)
for(int j=0;i<n;j++)
{
i++;
j++;
}

for(int i=0;i<n;i++)
{
for(int j=0;i<n;j++)
i++;
j++;
}
明显两段中“for(j = 0 .....)”作用域不同了。

还有,也许这是您想问的:
我来答:
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{
i++;
j++;