C 列挙型 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(列挙型)
 
1行: 1行:
 +
[[C PlusPlus#Cにもあった技術|C++]]へ戻る
 +
 +
 
※このページではC言語にも存在していたという意味で記事タイトルがC 列挙型になっていますが、<br />
 
※このページではC言語にも存在していたという意味で記事タイトルがC 列挙型になっていますが、<br />
 
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br />
 
[[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br />
 
<br />
 
<br />
 
== '''列挙型''' ==
 
== '''列挙型''' ==
 +
 
列挙型という名前自体が日本語としてもあまり使わない単語の型なので、なんともつかみどころのない型ですが、世界中のプログラマの中ではよく使われているという超人気の構文です。列挙って何?って感じですが、EnumrationとかEnumeratorといった単語を素直に日本語に訳したら列挙だったみたいな感じです。「(順序)番号割り当て型」くらいがちょうどよい日本語なのですが、これではあんまりにも幼稚な感じもあるというところなのかもしれません。
 
列挙型という名前自体が日本語としてもあまり使わない単語の型なので、なんともつかみどころのない型ですが、世界中のプログラマの中ではよく使われているという超人気の構文です。列挙って何?って感じですが、EnumrationとかEnumeratorといった単語を素直に日本語に訳したら列挙だったみたいな感じです。「(順序)番号割り当て型」くらいがちょうどよい日本語なのですが、これではあんまりにも幼稚な感じもあるというところなのかもしれません。
  
106行: 110行:
  
  
   enumActionSignal = 0;
+
   enumActionSignal = 0;//実際はこの代入は出来ない。
  
  
121行: 125行:
  
  
列挙型変数への代入は列挙子でしか代入できません。したがって列挙子を指定してもよい関数でありながら数値で指定してもよい関数がこの世の中にはたくさんあることから、列挙子を使える関数の中身はどちらの型を引数にとってもよいような作りになっていることになります。
+
列挙型変数への代入は列挙子でしか代入できませんが、if文やswitch文などで列挙子以外の値と比較演算をすることは可能です。
  
  
162行: 166行:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
のように列挙子の記述の途中で…ACTION_STOP2 = 0,…のような記述を挟むことで、番号のふりなおしがされます。すべての列挙子に数値を指定して列挙子を作成することもできます。すべて列挙子に数字を指定するということは、順番に割り振られる列挙型のシステムを使うかどうかの違いだけになります。何度でも振り直しができるため、列挙子がもつ数字が重複することは、すごく当然のように許されています。
 
のように列挙子の記述の途中で…ACTION_STOP2 = 0,…のような記述を挟むことで、番号のふりなおしがされます。すべての列挙子に数値を指定して列挙子を作成することもできます。すべて列挙子に数字を指定するということは、順番に割り振られる列挙型のシステムを使うかどうかの違いだけになります。何度でも振り直しができるため、列挙子がもつ数字が重複することは、すごく当然のように許されています。
 +
 +
 +
また、列挙名型を宣言した範囲内であれば、列挙子が持つint型の整数値を格納することができるため、
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#pragma once
 +
#include <iostream>
 +
 +
using namespace std;
 +
 +
int _tmain(int argc, _TCHAR* argv[]){
 +
  enum enumAction{
 +
    ACTION_STOP,
 +
    ACTION_START,
 +
    ACTION_PAUSE,
 +
    ACTION_RECORD,
 +
    ACTION_RESTART,
 +
    ACTION_NEXTCHAPTER,
 +
    ACTION_PREVCHAPTER
 +
  };
 +
  int nEnum;
 +
  nEnum = ACTION_STOP;
 +
 +
  printf("%d\n",nEnum);
 +
}
 +
</syntaxhighlight>
 +
と上記のように列挙子をint型の変数へ代入することができます。
  
  
 
列挙型の変数はポインタとして扱われることもありますので、そのあたりの応用が必要になることもありますが、通常のポインタ操作となんらかわらないため、詳細は[[C ポインタ|ポインタ]]の項目を参照して下さい。
 
列挙型の変数はポインタとして扱われることもありますので、そのあたりの応用が必要になることもありますが、通常のポインタ操作となんらかわらないため、詳細は[[C ポインタ|ポインタ]]の項目を参照して下さい。
 +
 +
 +
[[C PlusPlus#Cにもあった技術|C++]]へ戻る

2017年5月29日 (月) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス