(C) if を含む関数がある場合、条件が true の場合は特定の値を返し、それ以外の場合は別の値を返すことができます。else を使用することは多かれ少なかれ効率的ですか?
つまり...
int foo (int a) {
if ((a > 0) && (a < SOME_LIMIT)) {
b = a //maybe b is some global or something
return 0;
} else {
return 1;
}
return 0;
}
あるいは単に
int foo (int a) {
if ((a > 0) && (a < SOME_LIMIT)) {
b = a //maybe b is some global or something
return 0;
}
return 1;
}
GCC を想定すると、最初の実装では、コンパイルされたコードが 2 番目の実装とは異なる結果になるでしょうか?
ここでは可能な限り効率的である必要があるため、else の分岐の可能な削減は素晴らしいことですが、スタイル的には、私の内部 OCD は、関数の最後の命令として 0 または void ではない戻り値を表示することを好みません。何が起こっているのかあまり明確ではありません。とにかくそれが取り除かれるなら、私は他のものをそこに残すことができます...