嵌套循环中的C++变量重新声明

GAU*_*AVA 0 c++ gcc syntax-error variable-declaration

下面是一个包含3个嵌套循环的代码.变量curs和tempv在最外层for循环的每次迭代中被重新声明.这应该给我错误,但我能够成功运行它没有错误的gcc 4.8.4.

for(int i = 0; i<lend; i++)
{
    string curs = vstring[digits[i]-'0'];
    vector<string> tempv;
    for(int j = 0; j<v.size(); j++)
    {
        for(int k = 0; k<curs.size(); k++)
        {
            tempv.push_back(v[j] + curs[k]);
        }
    }
    v = tempv;
}
Run Code Online (Sandbox Code Playgroud)

在for-loop中重新声明变量是否可以?我理解在C++中,变量不能在同一范围内重新声明.

Mat*_*lia 5

在for-loop中重新声明变量是否可以?我理解在C++中,变量不能在同一范围内重新声明.

它是一个单一的词法范围,其中这些变量被声明一次.执行重复执行它的事实是无关紧要的 - 它不像你在一个被多次调用的函数中声明的变量得到重复的定义错误.与往常一样,每次进入范围时,都会在其中定义一个新的变量实例.

换句话说:范围规则是关于程序的静态,词法结构,这与程序执行流程的实际发生方式无关; 它们充当其运行时行为的蓝图,因为它们指示编译器如何解析块的其余部分以及每次输入作用域时要生成的代码.