以下のような構造体みたいな共用体みたいな見た目のやつ。
これってなんだ??
enum
{
ADD,
MULTI,
VAL
} type;これは、列挙型と呼ばれるもので、数字のリストを作るための機能。
構造体(全員別々のメモリを持つ)や共用体(全員で同じメモリを共有する)とは、全くの別物。
もくじ
列挙型enumの特徴とメモリ
単なるint型の変数が1つあるだけ。
enum
{
ADD, // 自動的に 0 になる
MULTI, // 自動的に 1 になる
VAL // 自動的に 2 になる
} type;このように書くと、
ADD = 0, MULT = 1, VAL = 2という数値が自動的に入る。
typeはただの変数名で、intを入れるための箱。
`int num = 1;`って書く時のnumと同じ。
列挙型を使うメリット
①「コンピュータにとっては処理が速い数字(int)のまま、人間にとっては直感的に読めるコードにできる」という両者のいいとこ取りができる 。
②if (type == 0) と書くより、if (type == ADD) と書いた方が、「ここは足し算の処理だな」と後から見ても一目でわかる(可読性の向上) 。
例えば列挙型を使わなければ、
if(type == 0){
}else if(type == 1){
}else if(type == 1){
}のように書く必要があり、0って何?1って何?…となる。
でも列挙型を使ったら
if(type == ADD){
}else if(type == MULT){
}else if(type == VAL){
}のように読むときにわかりやすい。
テストコード
実際にintが出力されるのを確かめる
enum
{
A,
B,
C
} alpha;
int main(void)
{
alpha = B;
printf("%d\n", alpha);
}alphaというint型の変数で、A(0)、B(1)、C(2)を持っている。
printfで実際にBを出力してみると1が出力される。