知道函数是有作用域的,但到最近才发现,其实在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”
}