case后面的语句不需要加大括号,只要别忘了break就行。不过有的编程规范上会建议用大括号把case后面的语句括起来。
你说的“不能通过编译”,可能是下面这个原因。C/C++里规定,不能在case语句里定义局部变量。例如:
int a = 2;
switch (a)
{
case 1:
int c = 10;
break;
case 2:
break;
default:
break;
}
编译就会出错,原因是在case 1里定义了局部变量c。
而C/C++还有一个很有意思的规定,用{}包括的语句,认为是一个”语句块“,而在语句块里就能想干什么就干什么。
比如:
switch (a)
{
case 1:
{
int c = 10;
break;
}
case 2:
break;
default:
break;
}
这样就能通过编译了。
再多说两句废话。C/C++里这个用{}括起来的语句块,可以认为是一段完全独立的代码。比如:
int a = 2;
{
int a = 3;
}
这样完全没问题。而你要是把这对大括号删掉,就会出错。