mirror of
https://github.com/wangdoc/clang-tutorial.git
synced 2026-02-03 10:53:37 +08:00
docs(variable): edif variable scope
This commit is contained in:
@@ -167,16 +167,3 @@ printf("%d\n", i); // 出错
|
||||
|
||||
上面示例中,`for`循环省略了大括号,但依然是一个块作用域,在外部读取循环变量`i`,编译器就会报错。
|
||||
|
||||
比较特殊的是,`for`的循环条件部分是一个单独的作用域,跟循环体内部不是同一个作用域。
|
||||
|
||||
```c
|
||||
for (int i = 0; i < 5; i++) {
|
||||
int i = 999;
|
||||
printf("%d\n", i);
|
||||
}
|
||||
|
||||
printf("%d\n", i); // 非法
|
||||
```
|
||||
|
||||
上面示例中,`for`的循环变量是`i`,循环体内部也声明了一个变量`i`,会优先读取。但由于循环条件部分是一个单独的作用域,所以循环体内部的`i`不会修改掉循环变量`i`,因此这段代码的运行结果就是打印5次`999`。另外,一旦`for`循环结束,循环变量`i`的作用域就消失了,变量不再存在,所以最后一行读取变量`i`就报错了。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user