「C言語/データ型と変数の高度な話題」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
{{Nav}}
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎enum: 順位を使った配列変数の初期化
タグ: 2017年版ソースエディター
628 行
構文中で、列挙子リスト( ''[[#enumerator-list|enumerator-list]]'' )の後ろに , がないケースとあるケースの両方が書かれているので、どちらの書き方も許されます。
 
;[https://paiza.io/projects/NXbg0pOVCrpf_eTHvTQq6w?language=cpp 列挙体の使用例]:<syntaxhighlight lang="C" highlight=18"3,24" line>
#include <stdio.h>
 
643 行
 
int main(void) {
const char *names[nDay_of_the_Week] = { // 順位を使った配列変数の初期化
"日曜日",[dwSUNDAY] "月曜日",= "火曜", "水曜日", "木曜日", "金曜日", "土曜日",
[dwMONDAY] = "月曜日",
[dwTUESDAY] = "火曜日",
[dwWEDNESDAY] = "水曜日",
[dwTHURSDAY] = "木曜日",
[dwFRIDAY] = "金曜日",
[dwSATURDAY] = "土曜日",
};
for (enum Day_of_the_Week dw = dwSUNDAY; dw < nDay_of_the_Week; dw++) {
651 ⟶ 657行目:
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
0: 日曜日
1: 月曜日
2: 火曜日
3: 水曜日
4: 木曜日
5: 金曜日
6: 土曜日
</syntaxhighlight>
 
列挙子(enumで定義する定数)は、同じスコープでは別の列挙体でも同じ名前空間を使うので、衝突を避けるため列挙子に列挙体のニーモニックを前置するなどの対策が必要です。
 
ここでは、列挙子の名前が <code>dw</code> で始まるのはタグ <code>'''D'''ay_of_the_'''W'''eek</code> の列挙子であることを示し、最後の列挙し <code>nDay_of_the_Week</code> 列挙子の総数で Number of <code>Day_of_the_Week</code> のつもり。列挙型の変数、<code>dw</code> はもちろん <code>enum '''D'''ay_of_the_'''W'''eek</code> 型であることを示しています。
 
この命名ルールは一例ですが、実際のプログラミングでは多くの識別子の名前を考える必要があるので、一貫性のある命名ルールを作ってコードを書くことで可読性・保守性が向上します。