问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

case后面的语句不加大括号,为什么有时候能编译通过有时候不能通过?

发布网友 发布时间:2022-04-30 21:33

我来回答

1个回答

热心网友 时间:2023-10-14 17:56

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;
}
这样完全没问题。而你要是把这对大括号删掉,就会出错。
case后面的语句不加大括号,为什么有时候能编译通过有时候不能通过?

case后面的语句不需要加大括号,只要别忘了break就行。不过有的编程规范上会建议用大括号把case后面的语句括起来。\x0d\x0a你说的“不能通过编译”,可能是下面这个原因。C/C++里规定,不能在case语句里定义局部变量。例如:\x0d\x0a\x0d\x0aint a = 2;\x0d\x0a\x0d\x0a switch...

...case下面可以写很多语句吗?要不要用大括号括起来???

加了之后,大括号框定了作用域,大括号内定义的变量只在大括号内部有效。不加的话,一个case中定义的变量,会在另一个case中也能访问,不安全。

关于switch-case语句是否需要加花括号

在编写C++代码时,若遇到错误提示:“不能从switch语句跳转到此case标签”,可能是因为switch-case结构中的case标签后未加花括号。通常情况下,switch-case语句中的case标签后无需加花括号,除非在case语句中声明了变量。此规则旨在提升代码可读性与清晰度,避免作用域不清可能导致的逻辑问题。不使用花括号...

case语句中的函数体真的可以不加花括号吗?

在编程世界里,理解case语句的使用至关重要。正如楼上所述,确实,在某些情况下,在case语句的函数体中,你无需使用花括号将其包围,这取决于你的代码逻辑是否需要明确的区块。每个case分支后是否需要加上break,这取决于你的程序设计,是否需要强制退出当前循环。通常情况下,每个case后都应当有一个break...

SWTICH语句case后面只能接一个表达式吗?

1、一个case紧接的条件表达式只能是一个编译期确定的整型常量表达式。case和这个常量表达式组成一个标签,这个表达式是当标号用的,所以必需在编译期确定。2、case标签本身不会被执行。一个case标签后可以接零条或多条语句(可以用大括号组成一条复合语句,但不必要)。遇到break;时控制流跳出switch。3、...

C++中关于case中for循环的问题

就是说在for之后也是可以使用的,那么按照去掉大括号的程序,i的作用域是从声明之处到switch的大括号结束。而default标签跳过了i的声明语句却在i的作用域之中,这显然是有问题的。之所以加上大括号是正确的,是因为大括号改变了i的作用域 按照标准,这段代码的错误是main函数的类型是int,其他没错。

c++里 case后可以跟多个语句么

可以。用switch语句,最好要注意break的使用,还有最后都加上default 语句。

求问这道关于Switch语句的c语言的题

这是因为这个switch...case句块的执行顺序是这样的,一开始k=8,在case从句中没有匹配的,所以它会执行defult句块中的内容,因为没有break语句来中断,所以在那之后会继续往下执行case10,case11句块中的内容,直到触底退出,因为这个过程共有3个k+=1语句,所以k被加了3次1,这样k的值就从8变成了...

关于C语言switch语句的break问题

= 也就是说当程序判断某个case的条件为真后,它将在执行该case所带的的语句块之后不再对后面的case的条件进行判断而直接执行。所以将第一个break去掉并输入0之后程序判断第一个case的条件为真,输出e,再继续执行第二个case后的语句,又输出e,之后遇到break语句退出switch结构。所以输出是两个e。

switch case用法举例

1.swich 后面括号内的'表达式必须是整数类型. 也就是说可以是 int 型变量、 char 型变量, 也可以直接是整数或字符常量, 哪伯是负数都可以, 但绝对不可以是实数, float 型变量、double 型变量、小数常量通通不行, 全部都是语法错误。2) switich 下的 case 和 defaut 必须用一对大括号{}括起来 ...

c语言if语句什么时候加大括号 if语句什么时候加大括号 while语句不加大括号 while语句条件之后不加括号 c语言if后加不加括号 if语句不加大括号 for语句不加大括号 for循环什么时候加括号 c语言if不加大括号
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上海大名城映_有多少户? 英特尔处理器漏洞有哪些害? 英特尔漏洞都会影响哪些CPU?下一代还会影响吗? cpu使用率100%是怎么回事呀? 生姜红茶减肥法骗局 鲁东大学大一新生电话卡是用的学校发的联通卡吗? 鲁东大学用移动的多还是用联通的多?求师哥师姐们解答 ...牙齿一碰到溃疡就疼,治疗口腔溃疡的偏方有哪些呢? 我想找一个飞车情侣名字,我有车队,车队名字是丿茗门丨灬 梦幻悟空传变态版安卓APK case后面能接多条语句吗? switch语句中case后只能加什么? C语言里的switch case 结构 case后面能不能跟数组元素该怎么写 举个简单例子吧 能说明问题就行 谢谢... 既定之天命,迦拉卡斯的*之眼、活性腐蚀之瓶,是不是没有法系的? C++中switch语句中case分句后面只能跟字符量吗? 战士用迦拉卡斯的*之眼和死从天降雕文是否能叠加英勇跳跃的减CD效果 请问case后面可以用const变量吗?网上的人都说不行,为什么我在VC6.0上测试可以?求大侠指点。 A5怎么关掉游戏空间? 大家好 C语言里面的 switch case 结构我有个小小的疑问: case后面到底能跟哪些东西呢 为什么我... chrome浏览器怎么设置标题栏? switch语句中,case的后面为什么必须是常量 谷歌浏览器为什么没有标题栏啊,我使用很不方便,我想要谷歌浏览器也有标题栏有没有办法? switch 语句中,case 后面可以是变量吗 为什么Google Chrome浏览器显示无标题?求跪啊~~~ 谷歌浏览器打不开任何网页 蓝屏 全部都是无标题,求大神 请问在C++ 中SELECT CASE中 case后可接变量吗 Java的switch语句:case后只能接常量,不能是变量吗 求助,谷歌浏览器灰屏无标题,什么都打不开 用chrome下载东西的时候,总是打开一个新页面,页面的名字叫做无标题,然后下载没反应 周扬青呼吁不要养折耳猫,折耳猫是种什么样的猫? 海盗来了这个游戏,两个,换玩时为什么点进去时是同一个的? 周星驰和吴孟达合作的经典电影有哪些? 周星驰和吴孟达共同主演的有哪几部电影? 吴孟达和周星驰共同演的电影有哪些 周星驰和吴孟达共同主演的有哪几部电影 周星驰和吴孟达拍过哪些电影? 求周星驰和吴孟达合作过的所有电影的名字 跪水周星驰和吴孟达合作的全部电影 周星驰和吴孟达所有合作的电影 吴孟达和周星驰一起演的电影大全 周星驰 吴孟达合演过的电影有哪几部 推荐几部周星驰与吴孟达的经典电影 周星驰与吴孟达演过哪些电影? 【求】周星驰吴孟达的所有搞笑电影,进来一下你又不会死!!! 宁波有哪些地方好玩 浙江宁波有哪里好玩的地方推荐 有没有周星驰和吴孟达演的电影? 宁波有哪些好玩地方 电脑主屏变小了怎么还原 宁波是的个好地方吗?