定数 |
●定数
定数とは,変数とは異なり,内容がずっと変化しない値のことである
名前の無い定数 | リテラル定数 | 値をそのまま書いたもの |
|
名前を持つ定数 | const定数 | 値の変化しない変数。 変数宣言の前に const をつけ,うしろに初期値指定を付ける。 |
|
列挙定数 | 整数値をつかってコード化を行うためのもの。 実態は int型 の整数値。 |
|
|
マクロ定数 | プリプロセッサにより,コンパイル前に書き換えられる |
|
・学籍番号 … 「情報太郎」君は「E12000ab」 ・出席番号 … 「環境花子」さんは出席番号「9」番 ・車のナンバープレート … 「情報太郎所有の自動車」は「千葉553 と 8888」 ・日本で出版されている本の出版コード … 「新版 明解C言語 入門編」は「ISBN978-4797327922」(いわゆるISBNコード) ・商品コード … 「eneloop-ニッケル水素電池-1本パック」は「HR-1UTG-1BP」 ・郵便番号 … 「千葉県千葉市若葉区御成台」は「265-0077」 ・国が定める都道府県コード … 「北海道」は「01」,「青森県」は「02」,… ,「千葉県」は「12」,… ,「沖縄県」は「47」 |
などなど。
このように,「整数値・通し番号・記号の列」などを使って「何か」を表す
ことを,「コード化」と呼ぶ。
プログラムでも,「整数」を使って「コード化」を行うことがよくある。
例えば
・文字コード(工業規格で決められてます) (1) ASCIIコード … 文字「5」は整数値「53」で表す,文字「A」は整数値「65」で表す,…,文字「z」は整数値「122」で表す。 (2) SHIFT-JISコード … 文字「あ」は整数値「33440」で表す,文字「情」は整数値「36846」で表す。 ・性別コード … 「男性」を「0」で表す,「女性」を「1」で表す。 ・ゲームの敵味方の識別コード … 「味方である事」を「0」,「敵である事」を「1」で表す。 |
など。
こういった,「整数」を使った「コード化」は,const定数を使っても行うこと
が出来る。
例えば,性別をコード化する場合は,
/* 参考)maleは男性,femaleは女性,genderは性別という意味の英単語。 */ |
/* 定数名の最初の一文字の k は,定数を表すドイツ語 konstant の頭文字で, |
その名前が定数名で有る事を表したいときに付けることが多い。 */ |
|
const int kMale = 0; /* 男性を表す定数kMale (値は整数値0) */ |
const int kFemale = 1; /* 女性を表す定数kFemale (値は整数値1) */ |
… |
int yourGender = kMale; |
… |
if ( yourGender == kMale ) { |
/* 男性の場合の処理をここで行う */ |
printf ( "あなたは男性です。\n" ); |
} |
else if ( yourGender == kFemale ){ |
/* 女性の場合の処理をここで行う */ |
printf ( "あなたは女性です。\n" ); |
} |
else { |
printf ( "性別が正しく設定されていません。\n" ); |
} |
というように書けないことは無い。しかし,この性別の例のように2種類ならまだ
簡単だが,数十種類以上になってくると const定数でコード化を行うことは大変に
なってくる。
そこで,C言語には「整数」を使った「コード化」に便利な,列挙型と列挙定数が
用意されている。列挙定数は,「定数を列べ挙げていく」形で定数を定義できる。
列挙定数の基礎
※列挙定数名の前に k がついているが,これはドイツ語の定数を表す konstant に由来し,
この名前が定数で有る事を示すのに良く用いられる命名法である。const定数の名前
にも
使われることが有るが,列挙定数でもよく使われる。
列挙型と列挙定数を使って,さきほどの性別の例を書き換えると以下の様になる。
|
enum Gender { |
kMale, /* 男性を表す定数kMale (値は整数値0) */ |
kFemale /* 女性を表す定数kFemale (値は整数値1) */ |
}; |
… |
enum Gender yourGender = kMale; |
… |
if ( yourGender == kMale ) { |
/* 男性の場合の処理をここで行う */ |
printf ( "あなたは男性です。\n" ); |
} |
else if ( yourGender == kFemale ){ |
/* 女性の場合の処理をここで行う */ |
printf ( "あなたは女性です。\n" ); |
} |
else { |
printf ( "性別が正しく設定されていません。\n" ); |
} |
|