error C2374: 'i' : redefinition; multiple initialization这是错误提示 程序如下

#include<iostream>usingnamespacestd;intmain(){intarray1[2][3]={1,2,3,4,5};intarray2[2... #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";

}
这个是可以的!!
展开
 我来答
tanzhangwen
推荐于2017-12-16 · TA获得超过1136个赞
知道小有建树答主
回答量:499
采纳率:0%
帮助的人:851万
展开全部
主要是定义重复的意思(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";

}
小诺很
2018-04-05 · TA获得超过2.5万个赞
知道小有建树答主
回答量:187
采纳率:100%
帮助的人:3.1万
展开全部

出现错误提示原因:变量“xxxx”在同一作用域中定义了多次,并且进行了多次初始化。

解决办法:检查“xxxx”的每一次定义,只保留一个,或者更改变量名。例如下面图示:

代码示例:

for(int j = 0; j < 16; ++j)
{
printf("%d",j);
}

printf("    ");

printf("%d",j);
for(int j = 0; j < 16; ++j)
{
printf("%d",j);
}
以上代码在VC6下编译出现 error C2374: 'j' : redefinition; multiple initialization的错误

但是在VC7以上的版本没错,在遵循ANSI标准的C++编译器也通过。

这是因为 在VC6中, for(int j = 0; j < 16; ++j)  j的作用域在for所在的域中。

而标准C++中, j的作用域在for语句块内.。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-10
展开全部
分数有点少
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式