转: C语言:error: a label can only be part of a statement and a declaration is not a statement|
原文:https://blog.csdn.net/qq_30242609/article/details/52858115
场景还原
一个简单的switch语句Demo#includeint main(){ int a=1, b=2, re; char c; scanf("%c", &c); switch(c) { case '+': re = a + b; break; case '$': re = a - b; re++; break; case '#': int other = 3; re = a + b + other; break; default: printf("Illegal input!\n"); break; } printf("%d\n", re);}
出错原因在switch语句里定义了新的变量。在上例中在case '#'语句块中定义了新的变量other。解决办法给定义了新变量的case语句块套上大括号,这个错误就没了。改后代码
#includeint main(){ int a=1, b=2, re; char c; scanf("%c", &c); switch(c) { case '+': re = a + b; break; case '$': re = a - b; re++; break; case '#': { int other = 3; re = a + b + other; break; } default: printf("Illegal input!\n"); break; } printf("%d\n", re);}