c++ - 为什么在 for 循环中定义的变量只存在于它内部?

标签 c++ c++11 for-loop

我正在阅读 Stanley B. Lippman 的 C++ Primer,在流程控制部分,它显示了一个像这样的 for 循环示例:

#include <iostream>

int main(void){
    int sum=0;
    for (int val=1; val <= 10; val++)
        sum +=val;
    std::cout << sum << std::endl; 
    return 0;

}

如果我尝试 std::cout << val;在 for 循环之外,IDE 给我一个错误。但我想了解它为什么会发生以及它与这段代码有何不同:

#include <iostream>

int main(void){
    int sum=0;
    int val;
    for ( val=1; val <= 10; val++)
        sum +=val;
    std::cout << sum << std::endl;
    std::cout << val; 
    return 0;

}

我可以在哪里实际打印 val值没有任何问题。

考虑到我们在 main 内部使用的 for 循环函数,它是否与局部变量有关?

最佳答案

每个变量都有作用域,也就是(粗略地说)它的生命周期。

for 循环的头部声明的变量的范围限于 for 循环。当控制传出循环时,变量传出作用域。当控制权移出函数时,在函数中声明的变量也会发生完全相同的事情。

关于c++ - 为什么在 for 循环中定义的变量只存在于它内部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31999896/

相关文章:

java - 需要解释以下java代码的输出

c++ - "extern __forceinline "是什么 C++ 习语?

c++ - 什么是智能指针,什么时候应该使用?

c++ - std::is_assignable 是如何工作的?

c++ - 在 cmake 调用中附加 CXX_FLAGS

javascript - for 循环中的变量始终返回 0

c++ - Qt OpenGL - 纹理透明度问题

c++ - 为一个 C++ vector 成员添加一个标志

c# - C# Action += function 的 C++ 方式?

java - 为什么第一个 for 循环在 Java 中失败了?