为什么在其他编译器能运行的这段代码,在VC6.0中报错?

[复制链接]
查看11 | 回复1 | 2011-4-8 12:05:17 | 显示全部楼层 |阅读模式
#includeiostream
using namespace std;
int array1[5]={1,2,3};
int array2[5];
int main(){
int array3[5]={2};

int array4[5];

cout\"array1:\";
for(int i=0;i5;i)
coutarray1\" \";
cout\"\\array2:\";
for(int i=0;i5;i)
coutarray2\" \";
cout\"\\array3:\";
for(int i=0;i5;i)
coutarray3\" \";
cout\"\\array4:\";
for(int i=0;i5;i)
coutarray4\" \";
cout\"\\n\";
return 1;
}



报错:

d:\\测试\\cccccccccccccccccccc.cpp(12) :
error C2374: \'i\' : redefinition; multiple initialization

这是在VC6.0中运行的,运行失败。
我又换CFREE,就运行起了,求解。。
回复

使用道具 举报

千问 | 2011-4-8 12:05:17 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">在同一个作用域中,变量不允许重复定义。
例如,不允许:
{int i; int i;
...
};
C/C 作用域 是 以 花括号 范围为准。
你现在的 { ... for (int i ...).. for (int i ...) ..for (int i ...)}在 同一个作用域中。
如果你改成:
{ 。。。。本作用域
{ for(int i=0;i5;i) coutarray1\" \";}// 子域
cout\"\\array2:\";
{ for(int i=0;i5;i) coutarray2\" \";}// 子域
cout\"\\array3:\";
。。
}
就正确了。
--
从程序简练来讲,int i; 放到本域前面声明一次(开一个单元)就可以了。
----
顺便说一下,int array4[5]; 不是全局量,编译器不会自动初始化它。
int array2[5]; 是全局量,编译器 自动初始化它 为 全0。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行