リテラル 【literal】 直値 / 直定数
表記の仕方によってデータ型を識別できるよう、例えば文字列を表記する際は必ず前後を「"」で括る、といった書式が言語仕様によって定められている。各データ型のリテラルを、型名を先頭につけて「文字列リテラル」「整数リテラル」「日付リテラル」などと呼ぶ。
定数・即値との違い
似た概念に定数(constant)があるが、これは変数のようにシンボルに値を代入したもののうち、宣言後には内容を変更できないものを指す。「const SECONDS_IN_A_DAY=86400;」のSECONDS_IN_A_DAYが定数、86400がリテラルである。
また、アセンブリ言語や機械語では、命令が扱う対象となるデータ(オペランド/被演算子)として、コード中に直に書き込まれた数値のことを即値(immediate)という。値が格納されたレジスタやメモリアドレスではなく、値そのものをコード中に書き込んだものを意味する。リテラルのことを即値と呼んだり、即値をリテラルと呼ぶ人もいる。
マジックナンバーとの違い
プログラム中に記載されたリテラルのうち、何らかの意図や意味が込められているが、その手掛かりがどこにもないようなものをマジックナンバーという。
例えば、消費税の計算を行うつもりで「price *= 1.08;」のように書くと、1.08というリテラルが何を意味しているのか読み手には伝わりにくい。税率であることを明らかにするため「const CONSUMPTION_TAX_RATE = 1.08;」のように定数を宣言し、「price *= CONSUMPTION_TAX_RATE;」のように記述すれば、何を行う処理なのか伝わりやすい。コード中に複数箇所同じ値が出てくる場合も、宣言部分を直すだけでよく、修正漏れが起きにくい。
(2019.4.4更新)