定数 (プログラミング)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

プログラミングにおいて定数(「ていすう」または「じょうすう」、Constant)とは、変数同様プログラムソースコードにおいて、扱われるデータを一定期間記憶し必要なときに利用できるようにするために、データに固有の名前を与えたものである。 ただし変数とは異なり、一度初期化するとその内容を変更することはできない。よって、内容が変化しないことが保証される名前が必要なときに使用される。

ソースコードに直接記述するデータ(リテラル)のことを指して定数と呼ぶことがあり、標準規格での用語がそうなっている言語もある。しかし、この記事で扱う「定数」はデータに名前を与えるものであり、基本的にリテラルとは別である。リテラルについてはそちらの記事を参照。なお、言語によっては、定数を初期化する式にリテラルあるいはリテラルと演算子等のみから成る式しか許さないことがある、というような関連はある。

定数の使用方法[編集]

定数を扱うための操作は初期化と参照の二つがある。

初期化[編集]

これから使用する定数の名前と対応するデータを明示する。変数はプログラミング言語によっては宣言が不要なものもあるが、定数は値が変えられないため、名前の明示(宣言)と同時にデータを関連づける(代入する)ことになる(初期化または定義)。また、定数も変数同様データ型を指定することもある。

代入するデータにはリテラルのほかに変数も使用することができる。

参照[編集]

初期化した定数を利用することを参照という。定数では宣言時に必ず初期化が伴うので、ソースコードの記述ミスがないかぎり不正な値が使用されることはない(言語設計という観点からすると、そのような変な「ソースコードの記述ミス」が可能であるという設計であるという言語のほうがおかしいと思われる。Javaなどではマルチスレッドとメモリモデルと初期化の関係が絡んで、タイミングによってstatic finalなフィールドで初期化前のオブジェクトが見える、といったことがあるが、それ絡みのバグは普通の感覚では「ソースコードの記述ミス」とは言わないものと思われる)。

その他[編集]

伝統的にはC言語では、プリプロセッサのcpp(en:C preprocessor)による置き換えで、定数は擬似的に実現されていたが、近年ではconst修飾により「再代入できない対象」としてデータに対し定数に近い扱いができる。またC言語ではenumを利用する方法もある。

用途[編集]

定数は基本的にデータを変更することができない。つまり、データが変更されては困るような値に使用する。また、プログラム中にそういったデータを数箇所におよんで使用するようなシーンでデータを変更する必要が出てきたときは、定数の初期化部分を変更するだけで済むようになり、変更漏れを防止できる。

例えば、円周率を使用するプログラムでは3.14...を定数として定義しておけば、誤って代入する心配はない。また、万一円周率が変わったとしても、初期化部分を変更しておけば、自然とプログラム全体で正しいデータを使用するようになる(円周率自体は変化しないが、必要とされる精度が変化すると言うことが考えられる……といったこともあるが、専らプログラマの定番ジョークの一つとして親しまれている)。

関連項目[編集]