所以基本上给出了以下代码。
当action = 2;
和mode = 1
将i
设置为2时?
我正在研究同事代码,它是这样编写的,但我认为中断只会跳过if并继续case 2
的其余部分。所以基本上if语句是没有意义的。
switch(action){
case 1: i = 1; break;
case 2: if(mode == 1)
{
break;
}
i = 2;
break;
case 3: i = 3; break;
我把它重写为:
case 2: if(mode != 1)
i = 2;
break;
但它不是唯一的地方,有些更复杂。如果我要重构它,我需要一些我正确的信息。
答案 0 :(得分:7)
没有“if循环”这样的东西。 Break永远不会引用“if”语句。
请参阅Wasserman's answer以获取指向语言规范的指针。
此外,假设1< = action< = 3,您的代码简化为:
if(! (action == 2 && mode == 1)) {
i = action;
}
答案 1 :(得分:1)
break语句将控制转移到封闭语句之外。
BreakStatement:
break Identifieropt ;
没有标签的break语句尝试将控件转移到最里面的
switch
,while
,do
或for
语句(重点补充)直接封闭的方法或初始化程序块;这个语句叫做中断目标,然后立即正常完成。
答案 2 :(得分:1)
如果那是您想要了解的,那么您的重构是正确的。
答案 3 :(得分:1)
如果action == 2
和mode == 1
,i = 2
将不会被执行(为什么你不测试它?它会比在这里要求更快)。
但是你的改进无论如何更清洁,我会用它。