for(int i=0; i < size; i++)
我在我的代码中声明了一个变量,如上所述收到编译时错误:根据ISO标准,类似这样的声明已经过时了。
然后我将变量在外面声明为for循环
int i;
for(i=0; i < size; i++)
.......它工作了????
有人可以告诉我这个声明,因为据我所知,在C ++中,我们可以声明变量不仅仅是在c中的顶部,而是在我们需要的时候在下面的任何地方。
我使用的编译器是gcc。
答案 0 :(得分:2)
您可能正在使用gcc而不是g ++(或xl_C而不是xl_C ++等)进行编译。
否则,检查您是否未通过旧标准(使用-std = c89或-ansi)
答案 1 :(得分:1)
第一个声明仅在for循环的范围内声明i
。第二个在外面的范围内宣布它。两者都完全有效。当你想在循环之后使用i
的值时,你会使用第二种情况,这通常是你在循环中有一个break
子句并希望找出哪一个的情况迭代你打破了循环。
答案 2 :(得分:1)
我猜你在循环结束后正在使用i
。
曾几何时,第一段代码相当于第二段代码,在外部的范围内声明i
,所以这样的代码是可能的:
for (int i = 0; i < size; ++i) {
// do something
}
if (i != size) {
// do something else
}
在标准C ++中,这是无效的; i
仅在循环体中可用,您需要在循环外部声明它以在那里访问它。