变量的作用域有关问题

变量的作用域问题
C/C++ code

#include <iostream>
using namespace std;

int main()
{
    for (int i = 3; ;)
    {
        printf("%d\n", i);
        break;
    } // i的作用域在该for循环内

    for (int i = 4; ;) // 上个的作用域已经结束了,怎么还有重复定义??
    {
        printf("%d\n", i);
        break;
    }

    return 0;
}




------解决方案--------------------
作用域结束了,所以就能再定义了。
------解决方案--------------------
有些比较老的编译器可能会有这个问题,i出了循环后还有效
------解决方案--------------------
探讨

作用域结束了,所以就能再定义了。

------解决方案--------------------
i是for循环下的局部变量,当退出for循环时,for循环下的局部变量自然也消失了。所以第二个i跟第一个i一点关系都没有。当然,以上的都是C/C++里的标准,只有遵守标准的编译器才是正确的。现在新的编译器遵守标准方面都很不错了。
这个问题是C里面很简单的问题,如果认真将C/C++的教材看过一遍的,估计都不会有这个疑惑。建议找本教材好好看看。