在循环外使用for循环变量是错误的吗?

Max*_*yne 2 c++ scope compiler-errors

例如,考虑以下代码:

#include <iostream>

int main() {
    for( int i=0; i<10; i++ );

    // USING i OUTSIDE for LOOP
    std::cout << i;    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我在g ++下编译它时,它说'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

我认为问题在于范围界定.变量i在范围内声明,并在其外部使用.当我问起时,我们的老师允许这样做.这是错的吗?

and*_*ras 7

"的"作用域ISO指的是C++标准.在旧标准(或者更可能是支持它的旧编译器)中,循环变量的范围是包含for语句的范围.但是,这改变了,这就是你得到这个错误的原因.

关于这种错误的一般提示--fpermissive:导致这些消息的构造通常(很久)已过时,并且被旧标准或旧编译器所允许.因此,存在依赖于过时行为的旧代码.您不应该编写需要该选项的新代码; 更快速地解决了在新GCC版本上运行遗留代码的问题.