从百度知道看来的,以前真没注意这个
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; } 这样完全没问题。而你要是把这对大括号删掉,就会出错。