局部变量如何被语句变量改变?

How can local variable be changed by statement variable?

我是一个完全的初学者,从 YouTube 视频中学习。我对这里的这个小概念感到困惑。 sum 的值在 for 循环范围之外为 '0'。然后我们在for循环的范围内改变它。当我们在 for 循环之外打印它时,为什么它仍然不是 '0'。 我知道这是一个愚蠢的问题。但据我所读,它不应该在 for 循环范围之外改变? 我只是想学习。

#include<iostream>
using namespace std;
int main(){
    int n =10 , sum=0;
    for (int i = 0; i <= n; i++)
    {
       sum += i;
    }
    cout<<sum<<endl;
    return 0;

}

这就是词法作用域的工作原理。

sum 在包含 for 循环主体的范围内定义,因此它在 for 循环主体的范围内。这就像某些文件中的“全局变量”——在文件范围内定义的变量——在文件中的函数中是可见的。

这是另一个不起作用的方向,即如果在 for 循环的主体中声明了一些局部变量 foo,则您无法访问封闭的 foo 的值for 循环终止后的作用域。