c:switch语句在close括号之前缺少分号

c:switch语句在close括号之前缺少分号,第1张

概述为了以后的读者和我自己的理智,我希望绝对清楚地表明,没有默认情况的switch语句(由于所有情况都被覆盖)或顺序if-elseif-else与最后的else应该不要做任何事情,不得省略,并包括对该效果的评论(见例). 但是,每当我在switch语句中包含默认大小写并将其保留为空时,我必须在默认大小写或编译器错误中加一个分号:“Line [switch switch of line statemen 为了以后的读者和我自己的理智,我希望绝对清楚地表明,没有默认情况的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:是否没有自己的语句,但后面紧跟一个语句.毫无疑问它意味着什么,但也许它被认为会弄乱人们的解析器.

总结

以上是内存溢出为你收集整理的c:switch语句在close括号之前缺少分号全部内容,希望文章能够帮你解决c:switch语句在close括号之前缺少分号所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1223255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存