新手求教作用域问题
#include<iostream>
using namespace std;
void main()
{
int a[3][3];
cout<<"请输入矩阵的各个元素:";
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
cin>>a[i][j];
cout<<"矩阵为:"<<endl;
for(i=0;i<3;i++)
{
for( j=0;j<3;j++)
cout<<a[i][j]<<",";
cout<<endl;
}
}
我用的vc6.0,变量i,j定义在语句内,不都应只在各自所在的for语句里面起作用,在语句外不能使用吗,按上述编译出现错误,然后修改 在第四个for语句中再次定义j(for(int j=0;j<3;j++)),其他不变,确没有出现错误,能正常编译,请问i没经过第二次定义,怎么不出现错误?
[解决办法]
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
cin>>a[i][j];
等价于
for(int i=0;i<3;i++)//第一个for循环定义i
{
for(int j=0;j<3;j++)
cin>>a[i][j];
}//j的作用于在这个for循环里面,指导循环结束
for(i=0;i<3;i++)//j的作用域已经结束所以这个循环里面j不定义就不识别了,i的作用于未结束
{
for( int j=0;j<3;j++)
cout<<a[i][j]<<",";
cout<<endl;
}
[解决办法]
for(int i=0;i<3;i++)等价于
int i;
for(i=0;i<3;i++)
这样i的定义是在循环的外面。
而不是楼主想象的那样等价于
(for i=0;i<3;i++)
{
int i;//??不能总在循环里面定义吧。
}