2016-12-01 14 views
3

これは私がGoogleに簡単に望んだ基本的な質問ですが、答えは見つかりませんでした。列挙型への/からの暗黙の変換

のは、私が列挙型を持っているとしましょう:

enum abc { a, b, c }; 

サポート暗黙的な変換は何ですか?コンパイラの拡張機能やコンパイラ間の動作が異なりますか?

私は列挙型への暗黙の型変換について尋ねています:

enum abc test = (** which type can appear here? **); 

としてだけでなく、列挙型からの暗黙的な変換:

(** which type can appear here? **) test2 = test; 

私は両方のCのための答えを知りたいとC++。参考として

+2

に暗黙的に変換可能な、それは面白いです。しかし、あなたは*どの型がここに現れることができるのか知っていますか?*は 'int'です、そうですか? –

+0

@iharobは常にそうですか? http://ideone.com/5WvR9K ...だから私が求めているのは – Paul

+0

@iharob 'short'や' signed char'や '1e2'のような範囲の '_Bool'や' double'値は使えませんか? – chux

答えて

2

は言う:スコープを持たない列挙型の

値は、あなたの質問は、より具体的にする必要があり整数型

Reference link

+2

これはC++のみです。少なくとも参考文献はあります。答えはおそらく両方に適用されますが、ここでそのことを明確にする必要があります。特に参照がそうであれば。 –

+1

Cの場合: "各列挙型は、char、asigned整数型、または 符号なし整数型と互換性があります。型の選択は実装定義です。110)ただし、すべてのメンバーの値を表すことができる " –

+0

反対は真実ではありませんが、明示的なキャストを追加する必要があります。 – ubik

関連する問題