#include<stdio.h>
int main()
{
int a = 3, b=3 ;
switch (a){
case 1:
//int b;
break;
case 2:
a = 2;
int c = 9;
break;
case 3:
printf("a:%d b:%d c:%d\n", a, b, c);
break;
}
return 0;
}
以上代码在linu内可以编译通过,当然最常用的方式是使用加花括号“{ }”的方式,以上代码case 2下边定义的变量c如果前面没有”a = 2;“这行代码是编译不通过的,简单的方式是在case 2:后直接加分号在linux中也可以编译通过:
#include<stdio.h>
int main()
{
int a = 3, b=3 ;
switch (a){
case 1:
//int b;
break;
case 2:;
int c = 9;
break;
case 3:
printf("a:%d b:%d c:%d\n", a, b, c);
break;
}
return 0;
}
参考如下,有详细一些的解释:
怎么在c语言里case后加变量,如何在switch case中定义变量(不用花括号)
然而以下的方式编译不过,可能跟编译器的种类相关:
switch case 语句内部变量定义_switch case 里面定义的变量
原因也有解释,记录一下