マジックナンバー (プログラム)
printColorText()関数は第1引数の文字列を、第2引数でRGBのフルカラー値として指定した色で印字する関数であるとする。
この場合、"color text"という文字列が「黄緑色」で表示される。ただし0x9acd32は直感的に「黄緑色」と伝えることは困難なマジックナンバーである。
マジックナンバーを取り除く手法の一つとして、以下のような書き方がある。
これらマジックナンバーを避けるため、マジックナンバーが書いてある箇所を定数や列挙型に置き換えるといった処置がとられる。定数は意味のわかりやすいような名前を付けることができるため、一読して数値の意味を理解できるからである。ここで、定数の初期化の際に右辺値に書かれる数値までマジックナンバーやハードコーディングとは呼ばない。
また、1や0はそれ自体が「真」・「偽」などの意味(真理値)を示しうる数値であり、使われる文脈によってはマジックナンバーとは呼ばないこともある。古いC言語では、意味を明確にするため、1/0の数値を直接用いるのではなく、TRUEやFALSEといったシンボルを明示的に定義して利用することがあった。
現在のC言語規格案では、
_Bool Definitions For true and false.
を採用している。