今天在编写C代码的时候,碰到了一个以前没有碰到过的switch case语句中定义变量出错问题。
问题大概是这样的,看下面这个代码,它在case中定义了一个变量,然后报错了:
#include<stdio.h>
int main(int argc, char const *argv[])
{
int a = 1;
switch(a)
{
case 0:
int m;//报错,a label can only be part of a statement and a declaration is not a statement
//这句话的意思是说,标签只能是statement语句的一部分,而declaration声明不是一个statement语句。
printf("----0----\n");
break;
case 1:
printf("----1----\n");
break;
default:
printf("----2----\n");
break;
}
return 0;
}
这句话的意思是说,标签只能是statement语句的一部分,而declaration声明不是一个statement语句。
在C99标准中,case和default都是标签语句,他们后面必须得跟上statement。
关于label: