我想知道这两个代码之间是否有任何区别:
代码1:
if(isSleepy()){
sleep(1);
} else if (isBored()){
dance();
dance();
} else {
walkRight(50);
walkLeft(50);
if(isHungry()){
eat();
}
}
代码2:
if(isSleepy()){
sleep(1);
}
if (isBored()){
dance();
dance();
}
walkRight(50);
walkLeft(50);
if(isHungry()){
eat();
}
我已将if-elseif-if链替换为if。这会影响病情过程吗?
答案 0 :(得分:3)
这是否会影响病情过程?
是的,确实如此。在第一种情况下,如果isBored()
返回true,则永远不会调用isSleepy()
,也不会检查其结果。在第二种情况下,被检查,它是完全独立的。同样,如果walkRight
返回true,则不会在第一个块中调用walkLeft
和isSleepy()
,但将位于第二个块中。
重新格式化第一个代码块有助于使事情更加清晰;
if(isSleepy()){
sleep(1);
} else {
// The below only happens if isSleepy() returned false
if (isBored()){
dance();
dance();
} else {
// These only happen if isSleepy() returned false AND isBored() returned false
walkRight(50);
walkLeft(50);
if(isHungry()){
eat();
}
}
}
答案 1 :(得分:0)
else if
条件失败的情况下才会检查 if
。如果preceeding
if语句发生了什么,将会执行并评估一个接一个的简单。
要理解简单翻译if-else
含义
答案 2 :(得分:0)
在第一种情况下,如果else
条件为else if
,则永远不会检查true
阻止,如果if
条件为真,则永远不会检查该条件。
在第二种情况下,检查两个if
条件并且第三个块不在任何条件内,它总是被执行。
这是否会影响病情过程?
在第一个代码中,条件是互斥的,但在第二个代码中,两个条件可能同时为真。