No.1ベストアンサー
- 回答日時:
メリットと言えば、プログラムの可読性が良くなる事と、コーディング時点で
不用意に変な値を代入してしまう事を防げると言う事が上げられると思います。
プログラムの可読性に関しては、無秩序な列挙子を定義してしまえば、列挙型だから可読性が良くなると言い切れない部分はありますが、意味のある集合体であれば
ある1つの列挙子を代入している個所を見れば、他にどんな値が列挙子として定義
されているか想定が付きやすいです。
もう1つの、コーディング時点で不用意な値...については、列挙型変数は、定義されている列挙子しか値の代入ができませんから、コーディング時に不正な代入を記述してしまった時、コンパイルエラーで引っかかる事です。
C言語の場合、文法的に合ってれば使い方が間違っていてもコンパイル通ってしまうので、バグの元となってその後のデバッグに苦労します。ですからコーディング時点でバグを出さない(出しにくい)コーディング手法が大事な言語ですから、そういう意味で列挙型は役に立ちます。
可読性やバグを出さないコーディング手法は他にも色々あると思いますので、
列挙型はオプションの1つだと考えれば良いのではないでしょうか。
No.2
- 回答日時:
例えばエラーコードの定義。
100番台がメモリエラー、200番台がファイルエラー…と定義する仮定します。
if (status == 101) {
なんの事かわかりません
if (status == EMemoryFull) {
メモリが足りないということがわかります。
これだけだと#defineで充分なのですが、列挙型だと
enum {
EMemory = 100,
EMemoryFull,
EBadHandle,
EEmptyHandle,
...
EFile=200,
...
};
という宣言が出来ます。
メモリエラーが増えすぎてファイルエラーを300番台にズラさなくてはいけなくなったときでも
EFile=200,
の部分を
EFile=300,
とするだけでオッケーです。
使い慣れるとメチャクチャ便利です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- オープンソース 【ChatGTPのオープンソースソフトウェアを解析したことがある方、教えてくださ 2 2023/03/08 18:57
- 英語 節を列挙する例示表現について 2 2022/08/15 13:52
- コレクション どういう気持ちから言うのだと思いますか 2 2022/08/30 17:15
- CPU・メモリ・マザーボード パソコン作りたいです 教えてください 4 2023/03/08 00:34
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- いじめ・人間関係 「嫌い」と宣言する意味。 5 2022/11/12 00:56
- 作詞・作曲 或る曲の楽譜のコード進行の中に"F onA"なるものがありました。これはどんな和音ですか? 7 2023/05/22 00:34
- 哲学 美大に通っている者です。美術関係の哲学を履修しています。 最近に出た課題の小テストについて、どれが正 2 2022/07/09 22:45
- Excel(エクセル) 関数を教えてください 2 2022/12/29 21:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Integer変数をカラにしたいので...
-
VB6変数の宣言dim j,k,p,m,n as...
-
VBAのプログラムで、DIAG = 1# ...
-
C++ 構造体の一括初期化 {0}
-
VBAで符号無し整数
-
VBAにてcolorindexを変数に格納...
-
charとucharの違い
-
long型のデータをバイト型の配...
-
C言語 構造体の中に共用体を定...
-
C++ メンバイニシャライザリス...
-
構造体の初期化方法について
-
typedefをプログラム中で解除す...
-
構造体にする理由・利点・使用例
-
構造体のメンバ初期化について
-
FILE構造体がどのように定...
-
「#undef」と「#define」の使い...
-
winsockのsendtoで送れるデータ型
-
整数から16進数への変換 現在c...
-
VBAの変数のデータ型を変更する...
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
C++ 構造体の一括初期化 {0}
-
long型のデータをバイト型の配...
-
「#undef」と「#define」の使い...
-
構造体のデータを丸ごとコピー...
-
VBAにてcolorindexを変数に格納...
-
C言語 構造体の中に共用体を定...
-
値が代入されてない時
-
異なる構造体のデータのコピー
-
typedefをプログラム中で解除す...
-
構造体のポインタにNULLが入らない
-
charとucharの違い
-
整数から16進数への変換 現在c...
-
VBAの変数のデータ型を変更する...
-
VB.NETのStructureというのはど...
-
構造体を型の異なる構造体に代入
-
日付チェック関数について
-
ユーザー定義型変数の一括初期化
-
構造体の初期化方法について
おすすめ情報