ありがちなミス
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/01 22:52 UTC 版)
被除数の符号に剰余の結果が依存する場合、意外な失敗を引き起こすことがある。 例えば、ある整数が奇数であるかどうかを調べたい場合、下記のC++での例のように、2 で除算した余りが 1 であるかどうかを確かめればよいようにみえる。 bool is_odd(int n) { return n % 2 == 1;} しかし、使用するプログラミング言語が、剰余の符号を被除数に依存させている場合、これは正しくない。なぜなら、n が負の奇数の場合、n % 2 は −1 となるので、この関数は false を返すからである。 正しい実装のひとつは、0 でないかどうかをチェックすることである。剰余が 0 であれば符号を気にする必要はない。 bool is_odd(int n) { return n % 2 != 0;} もちろん、どのような奇数も、剰余は 1 または −1 となるので、下記のような実装もできる。 bool is_odd(int n) { return n % 2 == 1 || n % 2 == -1;}
※この「ありがちなミス」の解説は、「剰余演算」の解説の一部です。
「ありがちなミス」を含む「剰余演算」の記事については、「剰余演算」の概要を参照ください。
- ありがちなミスのページへのリンク