考虑以下示例的速度(请忽略这个例子非常荒谬):
int multiply(int a, int b) {
if (a == 0 || b == 0) {
return 0;
}
if (a == b) {
return pow(a, 2);
}
return a*b;
}
与
int multiply(int a, int b) {
if (a == 0 || b == 0) {
return 0;
} else if (a == b) {
return pow(a, 2);
} else {
return a*b;
}
}
显然,这里并不是真的有必要,但是当我处理复杂的操作时,我发现在格式化后者时更容易阅读。是否需要更长时间才能在第二个配置中运行?我会牺牲什么吗?
答案 0 :(得分:6)
编辑:首先回答OP问题,然后讨论一般情况。
Sepcific-to-your-problem答案:在你的情况下,由于你有回报,在每种条件下,它都会突破流量控制。在一般情况下,在必要时将它们链接起来会更好。
一般答案:是的,基本上当你只使用if时,你的程序正在检查所有条件,即使其中一个条件得到满足。
当执行if,else-if,else的链时,一旦满足其中一个条件,该链中的所有其他条件将被忽略。
答案 1 :(得分:2)
在这种特殊情况下,我所知道的编译器都不会失败 为两者生成完全相同的输出。但是,在一般情况下 情况下: