> 皆さん既にお気付きかもしれませんが、この関数では-1を返すことはありません。というのも a == 0 かつ b == 0 のときは、当然 a == 0 または b == 0 も満たしますから、関数は0を返します。つまり、コード内のD, Eの部分の条件分岐は余分であるということです。一般に条件分岐はジャンプ命令を生み、これは比較的計算時間コストが大きいため、できれば余計な条件分岐は避けるべきです。しかしながら、仮に私たちがうっかり余計な分岐を入れてしまっても、コンパイラは気づいてその部分のコードを削除してくれます。優秀ですね。

分岐しないパスが存在するって要はバグなんだがコンパイラが
警告も出さずにしれっと削除するのを「優秀ですね。」ってアホか。