下面是一段包含 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;
}
在 for 循环中重新声明变量可以吗?我的理解是,在 C++ 中,不能在同一范围内重新声明变量。
最佳答案
Is it fine to redeclare variables within for-loop? I have an understanding that in C++ a variable cannot be redeclared in the same scope.
这是一个单一的词法范围,这些变量在其中声明一次。执行重复进入它的事实是无关紧要的——这不像是在多次调用的函数中声明的变量出现重复定义错误。与往常一样,每次您进入范围时,您都会获得其中定义的变量的新实例。
换句话说:作用域规则是关于程序的静态、词法结构的,它与程序的执行流程如何实际发生无关;它们充当其运行时行为的蓝图,因为它们指示编译器如何解析 block 的其余部分以及每次进入范围时生成什么代码。
关于嵌套循环中的 C++ 变量重新声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49850524/