error C2374: 'i' : redefinition; multiple initialization错误提示 ——解决方法

这是错误提示 程序如下

#include<iostream>

using namespace std;

int main(){
	int array1[2][3]={1,2,3,4,5};
	int array2[2][3]={{1,2},{4}};

	cout<<"array1: ";
	for(int i=0;i<2;++i)
		for(int j=0;j<3;++j)
			cout<<array1[i][j]<<",";
		cout<<"\narray2: ";
		for(int i=0;i<2;++i)
			for(int j=0;j<3;++j)
				cout<<array2[i][j]<<",";
			cout<<"\n";

}
说明一下 我将数组2的i改为m等值 运行成功 将数组2的j改为m却运行不成功!!这是什么原因!!
#include<iostream>

using namespace std;

int main(){
	int array1[2][3]={1,2,3,4,5};
	int array2[2][3]={{1,2},{4}};

	cout<<"array1: ";
	for(int i=0;i<2;++i)
		for(int j=0;j<3;++j)
			cout<<array1[i][j]<<",";
		cout<<"\narray2: ";
		for(int m=0;m<2;++m)
			for(int k=0;k<3;++k)
				cout<<array2[m][k]<<",";
			cout<<"\n";

}
这个是可以的!!
我来帮他解答
满意回答
2012-03-10 19:32
主要是定义重复的意思(redefinition)
一般在同一段代码中不要出现变量重复定义,否则就会报出错;
你这里面的出错这是和编译器有关,vc报错而有的不报错
for(int i=0;i<2;++i)
	for(int j=0;j<3;++j)
			cout<<array1[i][j]<<",";
		cout<<"\narray2: ";
for(int i=0;i<2;++i)
	for(int j=0;j<3;++j)
		cout<<array2[i][j]<<",";
你看看这里面两个for循环中的i都在同一层,然后你生命了两次int所以就出错了。你只要把第二个int去掉就不会有错了
for(int i=0;i<2;++i)
	for(int j=0;j<3;++j)
			cout<<array1[i][j]<<",";
		cout<<"\narray2: ";
for(i=0;i<2;++i)
	for(int j=0;j<3;++j)
		cout<<array2[i][j]<<",";
所以你后来把i改成m就没错就是因为变量重复定义没有了。
那么你一定又会问j为什么就可以?
这是因为j是在for循环里面,第一个j是第一个for里面的变量,第二个j是第二个for里面的变量,他们并不在同一个区间,所以就不会出错了。如果你把他们放其一就还会出错,例如下面程序就会报错
for(int i=0;i<2;++i){
	for(int j=0;j<3;++j)
			cout<<array1[i][j]<<",";
	for(int j=0;j<3;++j)   //要把第二个int给去掉才不会出错
		cout<<array2[i][j]<<",";
}
为了防止以上这些错误,你可以在开始的时候一起定义,后面不定义也不会出错了,比如
#include<iostream>

using namespace std;

int main(){
	int array1[2][3]={1,2,3,4,5};
	int array2[2][3]={{1,2},{4}};
        int i,j;   //在for循环上面一起定义了,后面就不用定义
	cout<<"array1: ";
	for(i=0;i<2;++i)
		for(j=0;j<3;++j)
			cout<<array1[i][j]<<",";
		cout<<"\narray2: ";
		for(i=0;i<2;++i)
			for( k=0;k<3;++k)
				cout<<array2[m][k]<<",";
			cout<<"\n";

}

    
    


      
      


      
      


      
      


     
     
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值