这个错误什么意思?!
编译下面代码时出现这两个错误:
error1:name lookup of 'i' changed for new ANSI 'for' scoping
error2: using obsolete bingding at 'i'
这两个错误是什么意思?怎么解决?!
代码如下:
#include <iostream.h>
#include <iomanip.h>
void printHeader( int );
int main()
{
printHeader( 5 );
return 0;
}
void printHeader( int size )
{
cout << "\nSubscripts:\n";
for ( int i = 0; i < size; i++ ) //error2
cout << setw( 3 ) << j << ' ';
cout << '\n';
for ( i = 1; i <= 4 * size; i++ ) //error1
cout << '-';
cout << endl;
}
问题点数:10、回复次数:10Top
1 楼MCR()回复于 2004-12-03 11:54:00 得分 0
cout << setw( 3 ) << j << ' '; // 是这里错吧,将j改成i就行了
Top
2 楼pcboyxhy(-273.15℃)回复于 2004-12-03 11:55:05 得分 0
j哪来的Top
3 楼kypfos(不在寻梦)回复于 2004-12-03 11:56:45 得分 0
就是变量没有声明啊,写成i就好啦Top
4 楼KingCrane(子鹤)回复于 2004-12-03 11:57:43 得分 0
error C2065: 'j' : undeclared identifierTop
5 楼vivalyt(感冒少抽烟)回复于 2004-12-03 11:57:50 得分 0
j是我后来不小心改错了,不是那个问题,换成i或者全部i换成j都一样有这个问题啊!
怎么回事?Top
6 楼MCR()回复于 2004-12-03 12:03:50 得分 0
将j改为i后输出的结果:
Subscripts:
0 1 2 3 4
--------------------
Press any key to continueTop
7 楼greenteanet(扎扎实实打基础,保持一颗平常心。)回复于 2004-12-03 12:29:36 得分 5
#include <iostream.h>
#include <iomanip.h>
void printHeader( int );
int main()
{
printHeader( 5 );
return 0;
}
void printHeader( int size )
{
cout << "\nSubscripts:\n";
for ( int i = 0; i < size; i++ ) //error2
cout << setw( 3 ) << i << ' '; // 将这个j改为i
cout << '\n';
for ( i = 1; i <= 4 * size; i++ ) //error1
cout << '-';
cout << endl;
}
以上程序在VC6.0下调试通过,输出结构如下Subscripts:
0 1 2 3 4
--------------------
Press any key to continue
根据楼主的程序,我看这个输出结果是正确的Top
8 楼vivalyt(感冒少抽烟)回复于 2004-12-03 12:42:12 得分 0
greenteanet(扎扎实实打基础,保持一颗平常心。)
你的结果是对的。
那么看来是我的编译器有问题了?!
我用C-Free和Dev C++编译都同样产生这个问题,不理解那两句错误提示,难道是“ANSI”里面有文章?
有谁知道敬请指教啊!!!!Top
9 楼ypyao85(云)回复于 2004-12-03 13:37:32 得分 0
作用域,int i;写到外面去Top
10 楼kypfos(不在寻梦)回复于 2004-12-03 13:51:10 得分 5
for(int i=0;;){}
在vc中认为i的作用域是在大括号之外
而标准C/C++中i的作用域只在大括号之中
Vc不符合标准的事时有Top




