• ベストアンサー

switch文の使い方について

switch文で比較をさせたいのですが、その場合 switch()の括弧のなかはどうすれば良いのですか? int a,b; switch(){ case(a<b): break case(a>b): break } どなたか知っている方おしえてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • qKAZp
  • ベストアンサー率47% (71/148)
回答No.4

>初心者な質問で申し訳ありません。 全然問題ないですよ。 >if文で作る場合、 >a<b >a>b >a=b >三つの場合を分岐させたいのですが、 >else ifというのを使えば良いのでしょうか? その通り。 a=bの場合はそのまま何もせずにそのあとの処理を続けるようにしたいのですが、どうすればいいでしょうか? a>b と a<b だけ処理してやればいいんじゃない? if(a>b){ hoge(); }else if(a<b){ fuga(); } mufu(); なかんじかな。

gosutero
質問者

お礼

大変参考になりました。 ありがとうございます。

その他の回答 (5)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

case には、定数しか書けないはずなので、質問文の様には書けないと思いますが、 次の様には、書けます #include <stdio.h> #include <math.h> void main(void){ int a,b; a=A;b=B;/* bcc32 -DA=a -DB=b prog.c */ switch(0==a-b ? 0 : (a-b) / abs(a-b)){ case 1:/* a>b */ printf("a>b\n"); break; case -1:/* a<b */ printf("a<b\n"); break; case 0:/* a==b */ printf("a==b\n"); break; default: printf("ありえない!!\n"); break; } }

回答No.5

もし、どうしてもswitchで比較させたいのなら、 switch(a<b) { case 0: 論理式が偽のとき(a>=b)の処理 break; default: 論理式が真のとき(a<b)の処理 break; } という手はありますが、そんなことをする人はいませんね。。結局case 0:の中でさらに判定が必要になります。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

参考URLを参考にされてはいかがでしょうか。

参考URL:
http://homepage1.nifty.com/toshio-k/prog/c/
  • qKAZp
  • ベストアンサー率47% (71/148)
回答No.2

switch case は、ある変数がいろいろな値を取るときに、値によって処理をわけるために使います。 例題の場合は、比較結果による分岐なので、if文がむいていますね。 一般に、switch()の括弧の中に変数を入れ、 case 値: ~ break; でその処理を行うようにします。 int a; switch(a){ case 0: printf("0だよ"); break; case 1: printf("1だよ"); break; default: printf("それ以外だよ"); } なんて風です。

  • chipizou
  • ベストアンサー率44% (8/18)
回答No.1

出来ません。 if文ではダメなのでしょうか?

gosutero
質問者

補足

初心者な質問で申し訳ありません。 この問題でずっと悩んでいたので助かりました。 if文で作る場合、 a<b a>b a=b 三つの場合を分岐させたいのですが、 else ifというのを使えば良いのでしょうか? a=bの場合はそのまま何もせずにそのあとの処理を続けるようにしたいのですが、どうすればいいでしょうか?