diff --git a/docs/variable.md b/docs/variable.md index e9d918f..c9c4a6b 100644 --- a/docs/variable.md +++ b/docs/variable.md @@ -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`就报错了。 -