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

标签 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;
}

在 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/

相关文章:

python - 在 python 2.7 中导入 nltk 的语法无效

sql - SQL语法错误,不是我的查询

c++ - 如何从所选目录(在 listWidget 中)过滤图像文件

c++ - 使用 valgrind 查找 mysql c++ 客户端中的内存泄漏

c++ - 有没有办法在命令行获得可读的 gcc 错误和警告输出?

c - GCC 的 MSVC __asm 关键字是什么?

gcc - 叮当 : error: invalid version number in '-mmacosx-version-min=11.2'

frameworks - Phalcon分页器错误: Syntax error, unexpected EOF

c++ - 跨另一个进程共享进程内 COM 对象

c++ - msleep() 是否为其他线程提供周期?