case后面的语句不加大括号为什么有时候能编译通过,有时候不能?
答案:1 悬赏:0 手机版
解决时间 2021-11-25 14:22
- 提问者网友:ミ烙印ゝ
- 2021-11-25 08:50
case后面的语句不加大括号为什么有时候能编译通过,有时候不能?
最佳答案
- 五星知识达人网友:罪歌
- 2021-11-25 09:29
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;
}
这样完全没问题。而你要是把这对大括号删掉,就会出错。
你说的“不能通过编译”,可能是下面这个原因。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;
}
这样完全没问题。而你要是把这对大括号删掉,就会出错。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯