Light C | ← → 目次 索引 |
列挙 (enumeration) は連続する整数に名前を付けるための機能です。
構文 | enum [tag] { names,... } [vars],... ; |
enum tag vars,... ; | |
※ここで names は name[=value] |
names で定義した個々の列挙名には、0 から順番に整数が割り当てられます。
enum { a, b, c }; | // a=0, b=1, c=2 |
これらの列挙名は、プログラム中で整数定数と同じように使用できます。
if ( x == b ) ...; | |
switch ( x ) { | |
case a: ...; | |
case b: ...; | |
case c: ...; | |
} |
列挙名の値を = で明示的に指定することもできます。その場合は、後続の列挙名の値も影響を受けます。
enum { a, b, c=10, d, e }; | // a=0, b=1, c=10, d=11, e=12 |
複数の列挙名に同じ値を割り当てることもできます。
enum { a, b, c=0, d, e }; | // a=0, b=1, c=0, d=1, e=2 |
列挙型の変数を定義できます。列挙型は int 型と同じものと見なされます。ただし、-wenum を指定した場合は、他の型への変換が警告されます。
enum { a, b, c } e; | // int 型と同じサイズの変数 e を定義 | |
e = a; | // 有効 | |
int i = e; | // 有効 | |
e = i; | // -wenum:1 なら警告 |
enum { ax, ay, az }; | // ax=0, ay=1, az=2 | |
enum { bx=1, by, bz }; | // bx=1, by=2, bz=3 | |
enum { cx, cy=0, cz }; | // cx=0, cy=0, cz=1 | |
enum { dx, dy } e1; | // dx,dy と列挙型変数 e1 を定義 | |
enum tag { ex, ey }; | // ex,ey と列挙タグ tag を定義 | |
enum tag e2, e2b; | // tag 型で e2 と e2b を定義 | |
e1 = dx; | // 有効 | |
e1 = ex; | // -wenum:1 なら警告 | |
int i = dx; | // 有効 | |
e1 = i; | // -wenum:1 なら警告 | |
e1 = e2; | // -wenum:1 なら警告 | |
e2 = e2b; | // 有効 |
Copyright © Tama Software Ltd, 1999-2012. | ← → 目次 索引 |