在switch语句的默认部分中断是否会被视为错误的编码?我正在阅读的一本书说它是可选的,但是老师很乐意使用它。
答案 0 :(得分:15)
最佳做法是始终使用break
,除非您的意思是控制流入另一个案例,即使在切换结束时也是如此。
答案 1 :(得分:8)
这取决于你是否在switch语句的开头或结尾处有它。如果在case
之后还有其他default
s,那么您可能确实需要break
,除非您真的想要落空。
switch (a)
{
case 0:
default:
printf("Default\n");
break;
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
}
答案 2 :(得分:5)
老师非常迂腐,惩罚学生在源代码中添加一些内容,这完全没有区别。
确实没有真正的理由将break
放在这样的语句中:
switch(i) {
case 0:
// whatever
break;
default:
// whatever
}
<强>可是:强>
在所有案例陈述之后加上break
是个好主意。如果稍后将另一个语句添加到switch
?
switch(i) {
case 0:
// whatever
break;
default:
// whatever
case 1:
// OOPS! Is the missing break above intentional or a mistake?
}
即使有人认为这种情况永远不会发生(恕我直言,这是非常强烈的事情),你应该问你的老师为什么要为此计算,而不是,例如,在源中使用多余的空格。毕竟,空格也不会改变程序的含义。
答案 3 :(得分:3)
我曾在每个交换机都需要break
的地方工作,包括默认情况。您的老师是否解释了为什么他或她标记错了?
答案 4 :(得分:2)
我同意其他人的意见:如果default
跟随最后的case
,则没有必要。但是我总是把它放进去,因为我(或者更糟糕的是,其他一些可怜的兄弟)可能会在默认的六个月之后无意中添加另一个case
。当然,那将是一个错误,但只有一个 输入 错误:为什么我应该让代码容易受到难以发现的错误 1 只是因为我犯了一些笨手笨脚的午夜错误?谁需要那种悲伤?
教师注意:在这种情况下插入break
就是防御性代码的一个例子,这总是一件好事。
学生注意事项:磨牙,做鬼脸,呻吟,喝啤酒,然后继续前行,记得在下学期避开这位教练。
1 这实际上发生在我所参与的一个项目中,它带走了我们[原文如此!我们:整个项目团队]整个下午都找到 bug 输入错误;我们到处寻找 除了 切换块。
答案 5 :(得分:1)
如果默认情况是最后一种情况,则没有必要。
如果有一天你决定将最后一个案例移到另一个地方,那么如果有休息时间可能会为你节省一些错误。
其余的是品味问题。编码也不错。
答案 6 :(得分:0)
default
分支始终应该是switch
块中的最后一个案例,因此无论是否有break
,都会在switch
之后继续执行}。因此,break
通常不会在那里使用,因为它是多余的。
但是,如果某人决定更改case
的顺序,break
的存在与否可能会产生巨大的差异。但话说回来,将default
案件移到另一案件前面本身就是一个严重的错误。