【发布时间】:2018-04-16 06:04:14
【问题描述】:
下面是一段带有 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++ 中,不能在同一范围内重新声明变量。
【问题讨论】:
-
每次迭代都会获得全新的对象。
-
如果编译器说没问题,那是没问题的。
-
您只在循环范围内声明它们一次。每次迭代都会进入和离开范围。
-
@DyZ:不幸的是,一般而言在 C++ 中,它并不是衡量代码正确性或标准遵守情况的重要指标。有几个错误标准不需要任何诊断,或者他可能依赖于编译器特定的扩展。
-
您确实使用了
int j=0和int k=0。您期望j和k工作的方式,tempv也可以这样工作
标签: c++ gcc syntax-error variable-declaration