概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C swithch case文
2006年08月29日 (火) | 編集 |
タマネギと舞茸と卵だけでも食える丼モノにはなるものだ。
肉が無いので少々物足りないが、それでもふりかけでご飯を食って、おかずにキュウリを齧るのと比べれば十分マシな食事である。
まあどの道キュウリは齧るけど。
キュウリにはマヨネーズだよなあ。何で味噌なんてつけるんだろう。



さて。

また条件分岐の話だな。
今までやった条件分岐っつったらif elseなんだが、これは真の場合と偽の場合の2通りにしか分岐出来ない。条件が2通りしかないなら便利なんだけどな。
それに対してswitch caseってのは複数に対応可能な条件分岐なわけだ。

switch(式){
 case 式1:文1
  break;
 case 式2:文2
  break;
 中略
 case 式n:文n
  break;
 default:文
}


書式はこんな感じ。
switchにある(式)と、それぞれのcaseの式を比較し、一致するcaseの文を実行して、breakでswitch文全体から抜ける。switch文の式で使える型はcharやint、enum等。enumって何やねんって気がするが、後でやるそうなので今は置いておこう。

また、breakが無ければ次のcaseの文を実行する。
なので、switch文で(式)が'a'か'A'であるなら、という条件分岐を行いたい場合は

switch(式){

 case'a':
 case'A':printf("aだぜ\n");
  break;
}


こんな風に書けば'a'である場合も'A'である場合にもprintf文を実行出来る。

ちなみにどのcaseの式も一致しない場合には、defaultの文を実行して終わりになる。
ついでに何も処理を行わないならdefaultの文は省略も可能だ。

んじゃ実際に見てみよう。
文字によって異なる表示をする分岐を作ってみる。

void main(void)
{
 static char *menu={"A.カレー","B.ナポリタン","C.オムレツ","D.それ以外"};
 int c,i;
 for(i=0;i<4;i++)
  printf("%s\n",menu[i]);
 printf("何作るんだ?\n");
 c=getchar();
 switch(c){

  case 'a':
  case 'A': printf("ジャガイモ、人参、タマネギ、肉、カレールーが必要だな\n);
   break;

  case 'b':
  case 'B': printf("タマネギ、肉、ピーマン、トマトソース、トマトケチャップが必要だな\n");
   break;

  case 'c':
  case 'C': printf("卵とバターのみでいいな\n");
   break;

  default:printf("任意にある材料で作るがいいさ\n");
   break;
 }
}


switch_case_test.jpgswitch_case_test2.jpg
こんな感じ

まとめよう。

複数の分岐にはswitch case文が便利だ
でもswitch case文ではchar型とint型とenum型しか扱えないから注意だ


以上。
2択で済むならif文のが楽だがなー。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。