enum int

2015年5月2日 0 投稿者: khws4v1

enumからint

C言語

暗黙的に変換可能です。

C++

C言語と同じです。

ただし、enumの中身をlongとかcharとかint型以外として宣言している場合はintに変換するときにwarningが出るかもしれない。
(enumにint以外を持てるのはC++11以降のみ)

C#

C++11と同じくC言語とほぼ同じで、int型以外も持てる。
ただし、暗黙的な型変換ができない。

Java

JavaのenumはCのenumとは大きく異なり、「enumみたいなことができるクラス」と化している。
enumからintに変換するにはenum#ordinalメソッドを使わないといけない。

intからenum

C言語

intからenumに変換するのは、enumに挙げられていないでたらめな数値を代入できるので、明示的にキャストしないといけない。

C++

C言語と全く同じ。
ただし、キャストの際にはstatic_castを使うのが普通。

C#

Cと同じ。

Java

enum#valuesメソッドでenumに挙げられている値の一覧を取得し、その配列の要素数でintからenumに変換できます。