c:switch语句在close括号之前缺少分号
发布时间:2020-12-16 10:51:02 所属栏目:百科 来源:网络整理
导读:为了以后的读者和我自己的理智,我希望绝对清楚地表明,没有默认情况的switch语句(由于所有情况都被覆盖)或顺序if-elseif-else与最后的else应该不要做任何事情,不得省略,并包括对该效果的评论(见例). 但是,每当我在switch语句中包含默认大小写并将其保留为空时
为了以后的读者和我自己的理智,我希望绝对清楚地表明,没有默认情况的switch语句(由于所有情况都被覆盖)或顺序if-elseif-else与最后的else应该不要做任何事情,不得省略,并包括对该效果的评论(见例).
但是,每当我在switch语句中包含默认大小写并将其保留为空时,我必须在默认大小写或编译器错误中加一个分号:“Line [switch switch of line statement of line statement]`missing’;’在’}’之前发生.为什么?! 示例:生成编译器错误 switch(direction) { case MOVE_UP: //... break; case MOVE_RIGHT: //... break; case MOVE_DOWN: //... break; case MOVE_LEFT: //... break; default: /* DO NOTHING */ } 示例:不会产生编译器错误 switch(direction) { case MOVE_UP: //... break; case MOVE_RIGHT: //... break; case MOVE_DOWN: //... break; case MOVE_LEFT: //... break; default: /* DO NOTHING */; } 解决方法
C 03中的6.1 / 1给出了带标签的语句的语法:
labeled-statement: identifier : statement case constant-expression : statement default : statement C 11是相同的,除了您可以在标签之前具有属性. 零长度的标记序列不是C语句,因此默认情况下:它本身不是标记语句. 也就是说,我不知道为什么标签语句的语法不允许默认的原因是什么:statementopt.如果它确实存在,那么如果你写了默认值就会出现语法歧义:case 1:break;,无论是1还是break;是属于default的语句:,或者default:是否没有自己的语句,但后面紧跟一个语句.毫无疑问它意味着什么,但也许它被认为会弄乱人们的解析器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |