在C语言中编译器认为一个变量的作用域为距离其最近且包含其自身的{}内,但在一些特殊语法中(如 if-else 语句中),由于编码人员的不注意会造成变量的作用域不明确,从而导致编译器无法区分变量的作用域范围,则会报告作用域不明确编译错误。
为避免此类错误发生,在使用这些语句时应加入语句块{}避免错误发生。
如下所示:
int main()
{
/*
if(1)
int a=0;//此行作用域不明确
*/
if(1)
{
int a=0;
}
/*
switch (1) {
case 1:
int a=0;//此行作用域不明确
break;
default:
break;
}
*/
switch (1) {
case 1:
{
int a=0;
break;
}
default:
break;
}
/*
for (;;)
int a=1;//此行作用域不明确
while(1)
int a=1;//此行作用域不明确
do
int a=1;//此行作用域不明确
while(1);
*/
return 0;
}