- ベストアンサー
enumについて
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
列挙型宣言の書式は enum タグ名 { 列挙定数宣言 } 列挙型変数名 ; enum タグ名 { 列挙定数宣言 } ; enum タグ名 列挙型変数名 ; enum { 列挙定数宣言 } 列挙型変数名 ; enum { 列挙定数宣言 } ; よって、 enum RGB { red, green, blue } rgb ; enum CMY { cyan, magenta, yellow } ; enum CMY cmy ; enum { black, white } monochrome ; enum { gold, silver } ; 全て有効な宣言です。 参照時は rgb = red ; cmy = cyan ; monochrome = black ; Cの場合、列挙型は整数型と相互に代入可能なので int col = gold ; C++では列挙型はクラス型なので多少話がややこしくなり、適切なキャスト無しに他の型との相互代入はできません。
その他の回答 (2)
- fatal_error
- ベストアンサー率39% (23/58)
#1の方がばっちり例示されていますが。 できます。 宣言時に列挙型名を省略して変数名だけを書くと、無名の列挙型ができます。 その宣言でしか変数名を作らないときに使います。 enum { BLACK, RED, GREEN, BLUE, WHITE } colors; 宣言はこんな感じで、 colors = BLUE; みたいに使います。 一種の略記法らしいです。
- a-kuma
- ベストアンサー率50% (1122/2211)
例えば、C++ だと、こんな感じ。 #include <iostream.h> class A { public: enum { E1, E2 } x; }; int main() { A a; a.x = A::E2; cout << a.x << endl; return 0; } C なら、こんな感じ。 #include <stdio.h> int main() { enum { E1, E2 } x; x = E2; printf("%d\n", x); return 0; }
関連するQ&A
- VB.NETでのEnumの使用について
こんにちは、いつも拝見させて頂いております。 今回は、VB.NETのEnumについて教えて頂ければと思い、投稿しました。 VB.NETでEnum定義をしているのですが、クラス内のEnumとして定義 しているのですが、そのクラスのインスタンスを生成しなくても クラス内のEnum定義が参照できます。 クラスのインスタンスを生成していないのであれば、そのクラス内に あるEnum定義も参照できないのではないかと考えていたのですが、 参照できたので、なぜなのかがわかりません。 自分なりに色々と調べたのですが、EnumがSystem.Enumを継承している というのはわかりましたが、それがなぜ、クラスのインスタンスを生成 しないで、クラス内のEnum定義が参照できることになるのかがわかりません。 言語は、VB.NET2005です。 一応、ここの質問一覧も検索してみたのですが、該当しそうなもの が見当たらなかったので、ここに投稿させてもらいました。 お忙しいところ、申し訳ありませんが、ご教授ください。
- ベストアンサー
- Visual Basic
- enumについて
Java2 5.0で「enum」という列挙型が導入されてそうですが、 意味がよくわかりません。 今までは、interface等に (1) public final static int a = 0; public final static int b = 1; public final static int c = 2; などと、指定してきましたが、enumを使う事で、型に”安全”に なると書かれていますが、それもよくわかりません。 ”列挙値は、整数ではない”とも見たりしますが、(1)のよな使い方 をしなくなるのでしょうか。 いつどのような使い方するのか、どなたかご教示ください。 また、私のようなものに、合うようなサイトがあれば、教えてください。 宜しくお願いします。
- 締切済み
- Java
- Enum 列挙型でお聞きします。
Enum 列挙型でお聞きします。 一般的に、列挙型の使用度はどのくらいがベストなのでしょうか? あまり使用しない方がいいものなのでしょうか? たとえば、データベースにかきこまれているカラム名をEnumの列挙型で指定しようとした場合、 これはやるべきではないのでしょうか? やはり、最初から、確実に決められていないとだめなのでしょうか? どうもいまいち、よくわかりません。 参考URLは、 http://www.stackasterisk.jp/tech/java/jdk506_01.jsp#2_1を参考にしています。 よろしくおねがいします。
- ベストアンサー
- Java
- javaによるenum型の扱い
最近javaに親しんできたのですが、 Cとjavaにおける列挙型の扱いの違いに困っています。 javaにおけるenumはクラスであり、 各要素にメソッドを追加できることは分かったのですが…… 例えば、Cにおけるenumは確か、 typedef enum{EAST,SOUTH,WEST,NORTH} dirT; //定義 -------- (略) -------- dirT dir=EAST; //宣言・dirに要素EASTを格納 というようなことが出来たと思いますが、 javaはenumもクラスで、さらにnewでメモリ確保できないと聞きました。 つまり、このように列挙型の保持はできないということになるのでしょうか。 結局やりたいこととしては、このように「保持してある」列挙型に対して 条件分岐処理をしたいと考えています。 説明が上手くできず伝わりにくいかと思いますが、 どうか回答をお願いいたします。
- ベストアンサー
- Java
- C語でenumの使い方
http://www9.plala.or.jp/sgwr-t/c/sec16.html の下部に enum week { SUN, MON, TUE, WED, THU, FRI, SAT }; int main(void) { enum week w; /* ⇒列挙型 week で変数 w を宣言 */ w = MON; /* ⇒変数 w に列挙定数 MON を代入 */ と書かれています。 列挙型 week で変数 w を宣言するのはどういうときに メリットがありますか? 普通にunsigned char w と何が違うのでしょうか?
- ベストアンサー
- C・C++・C#
- enum宣言と列挙変数の初期値について
enumを使って以下の宣言とした時 enum home { yahoo, goo ,google, excite } ; enum home net ; 変数netに何も代入しなかった場合、変数netの値(初期値)はyahooの「0」となるのでしょうか? それとも、変数netには初期値という概念は無いものでしょうか?
- 締切済み
- C・C++・C#
- typedef enumの使い方を教えてください
enumもtypedefも知っていますが下記コードのような typedef enumを使用したものがどういった場面で有効なのかを簡単な具体例を使って教えてください。 enum { E1, E2 } E; typedef enum { e1, e2 } e; 特に前者と後者を使いを分ける状況の違いについて教えてください。
- 締切済み
- C・C++・C#
お礼
ありがとうございます!! >enum { gold, silver } ↑ このケースがなぞだったのです。 質問の仕方がへたでスイマセンでした。