知道函数是有作用域的,但到最近才发现,其实在if for do-while中,也是有作用域的,若在这些语句块中初始化的话,到了其外部就无法访问。
#include "pch.h"
#include <iostream>
int main()
{
for (int i = 0; i < 1; i++) {
int a = 1;
}
if (1) {
int a = 1;
}
int b = 1;
while (b) {
b--;
int a;
}
switch (b) {
case 0:
int a = 0;
break;
}
do {
b--;
int a = 0;
} while (b == 0);
int c = 0;
if (1) {
int c = 10;
}
printf("%d",a);//错误,提示未定义标识符a
printf("%d", c);//输出“0”
}
本文通过C++代码示例深入探讨了局部变量的作用域限制,特别是在for、if、do-while等语句块中声明的变量,在其外部无法访问的现象。揭示了不同语句块内变量的生命周期和可见性。

203

被折叠的 条评论
为什么被折叠?



