3 回答
TA贡献1853条经验 获得超9个赞
这可能取决于您认为的失败之处。我对这种事情还可以:
switch (value)
{
case 0:
result = ZERO_DIGIT;
break;
case 1:
case 3:
case 5:
case 7:
case 9:
result = ODD_DIGIT;
break;
case 2:
case 4:
case 6:
case 8:
result = EVEN_DIGIT;
break;
}
但是,如果您有一个case标签,后跟代码进入另一个case标签,那么我几乎总是认为这很邪恶。也许将通用代码移至函数并从两个地方调用将是一个更好的主意。
并且请注意,我使用“邪恶”的C ++常见问题解答定义
TA贡献1797条经验 获得超6个赞
这是一把两刃剑。有时非常有用,经常很危险。
什么时候好?当您想要10个案件时,所有案件的处理方式都相同...
switch (c) {
case 1:
case 2:
... do some of the work ...
/* FALLTHROUGH */
case 17:
... do something ...
break;
case 5:
case 43:
... do something else ...
break;
}
我喜欢的一条规则是,如果您想做任何想排除中断的事情,则需要明确注释/ * FALLTHROUGH * /以表明您的意图。
TA贡献1808条经验 获得超4个赞
失败确实是一件方便的事,具体取决于您在做什么。考虑以下简洁明了的方式来安排选项:
switch ($someoption) {
case 'a':
case 'b':
case 'c':
// do something
break;
case 'd':
case 'e':
// do something else
break;
}
想象一下使用if / else这样做。真是一团糟。
分享编辑
- 3 回答
- 0 关注
- 1113 浏览
添加回答
举报