• ベストアンサー

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の場合はそのまま何もせずにそのあとの処理を続けるようにしたいのですが、どうすればいいでしょうか?

関連するQ&A

  • switch文で文字を比較することは出来ませんか?

    switch文で文字を比較することは出来ませんか? 例えば… int main(void){ char buf[5]; buf = 'b'; switch(buf){ case 'a': ・  ・  ・  break; case 'b': ・  ・  ・  break; }

  • Switch文における、returnとbreakについて

    いつもお世話になります。 今回は、switch文において質問します。 XOOPSの中のスクリプトからですが、 ■ A code: --------------- switch($esc_type){ case 'html': return htmlspecialchars($string, ENT_QUOTES, $char_set); case 'htmlall': return htmlentities($string, ENT_QUOTES, $char_set); -----(中略)------ default: return $string; } ■ B code: --------------- switch($level){ case '1': return '\part{'; break; -----(中略)------ case '6': return '\subparagraph{'; break; } というのがありますが、 質問(1) switch文には故意にbreakを書かないのちょっと別として、 return は、breakを、省略できるのか、それともこれらは、等価なのか、 それとも、やはり、returnでもbreakを書くのがいいのか、教えてください。 質問(2) また、通常では、defaultでも、break が必要だとおもいますが、 省略?されているのも結構ありますが、breakがあるのが正解ですか? それとも、defaultでbreakはもともと必要ないのですか? これも教えてください。 どうか、よろしくお願いします。

    • 締切済み
    • PHP
  • switch文caseについて

    switchのcaseについてですが、数字を直接記述せずに、const変数に値を代入して使用出来ますか? 例) const int A = 1; const int B = 2; switch(suuti){ case A: 処理; break; case B: 処理; break; } コンパイルすると、「case 式は、整数型定数でなければなりません。」と出てきてしまうのですが、直接数値を記述しないといけないのでしょうか? よろしくお願いします。

  • switch文について

    下記のようなswitch文に もうひとつの変数 int tmp = Integer.valueOf(変数2).intValue();を代入したいのですが もう一つ代入できるのでしょうか?? 因みにswitch文にIF文を加えて変数を代入するのではなく switch文で複数の変数を使用したいのです。 どうぞよろしくお願いいたします。 なお、質問の意味が分からない、意図が伝わらない方は アドバイスはいりませんので 恐縮ですがアドバイスお願いいたします。 int lot = Integer.valueOf(変数1).intValue(); switch (lot) { case 1: out.print("OK"); break; case 2: out.print("NG"); break; default: out.print("エラー"); break;} }

    • ベストアンサー
    • Java
  • switch文について

    独学でjavaの勉強をしているのですが、switch文が本のとおりに入力しても エラーがでて困っています。どこが間違っているのかわかりません。 ちなみにプログラム内容は class bunki2{ public static void main(String args[]){ int a; a=1; switch (a) { case1:System.out.println("変数aの値は1です。"); break; case2:System.out.println("変数aの値は2です。"); break; case3:System.out.println("変数aの値は3です。"); break; } } } です。 これでコンパイルしようとすると’case’、’default’、または’}’がありません。とでます。 なぜできないのか教えてください。

    • ベストアンサー
    • Java
  • switch文での変数の扱い方について

    以前の質問ではお世話になりました。今回もよろしくお願いいたします。 今日C言語の授業で小数点で平均点を入力して、平均点と5段階評価(A, B, C, D, E)を表示するプログラムの作成を作りました。 その際評価の判定にはswitch文を使い、評価の条件は以下の通りです。 90以上をA 85以上89以下をB--------2 80以上85以下をC--------3 70以上79以下をD それ以外(69以下)をE 最初に先生より上記の条件で「switch文で完成できる」と言われたのがずっと頭に引っかかっていて、なんとかswitch文で作ろうと思いずっと悩んでいましたが、switch文のdefaultをなくして2段階に分かれている部分とEの評価の部分をif文で処理するか、 switch文ですべての点数(case 80: case 81: ... case 84:)を直接switch文で打つかの2つしか思いつきませんでした。 そこで皆さんにお聞きしたいのが、こういう問題の際に評価の処理をswitch文を中心に行いたい場合、みなさんでしたらどのように処理なされていらっしゃいますか? 今後のプログラミングの勉強としてぜひとも知りたいです。 どうかお願いいたします。

  • switch文、break文と流れの制御について

    switch文、break文と流れの制御について JAVA超初心者です。よろしくお願いいたします。 只今、テキストを使って独学でJAVAを学習しておりまして、タイトルのような内容を学習しているところで、下記のようなプログラムが例題にありました。 ------------------------------------------ package chapter10; import lib.Input; public class Ex5{ public static void main(String[] args){ int n = Input.getInt(); switch(n){ case 1: System.out.println("1です"); case 2: System.out.println("2です"); case 3: System.out.println("3です"); default: System.out.println("それ以外です"); } } } ------------------------------------------ これを実行してみますと、breakの記載がないので、「1」を入力すると -------------------- 1です 2です 3です それ以外です -------------------- と全て表示されます。「2」を入力すると -------------------- 2です 3です それ以外です -------------------- と表示されます。 そこで質問です。 breakの記載がないので、ブロックから抜け出せないのはわかるのですが、入力した数字をcaseで判定し、caseの条件に当てはまった場合、何故それ以下のSystem.out.print()が全て実行されるのかわかりません。 私の解釈では、上記プログラムで「2」を入力した場合、JAVAは上から順に case 1 →『1ではないから実行しない』 (納得) case 2 →『2が入力されているから実行』 (納得) case 3 → ??? (入力されたのは2であり、3ではないから実行されないのではないか?) default → ??? (入力されたのは2であり、「それ以外」ではないから実行されないのではないか?) と思うのです。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • C言語のswitch文について間違っているところを教えてください

    初めに初心者ですので間違っているところは説明つきの回答をしていただければありがたいです。 今回switch文を使って 「足し算、引き算、掛け算、割り算」のプログラムを作ったつもりなのですが、intを使うと割り算の小数点が出ないしfioat文を使うとswitch文には、使えないと出るしどのようにしたら良いのか御回答よろしくお願いします。 (今は、int文でプログラムを作っているつもりです。) #include <stdio.h> void main (void) { int a,b,k; printf("どのような計算をしたいか数字を選んでください。\n"); printf(" 1.足し算 (例 a+b)\n"); printf(" 2.引き算 (例 aーb)\n"); printf(" 3.掛け算 (例 a×b)\n"); printf(" 4.割り算 (例 a÷b)\n"); printf("計算したい番号を入力してください "); scanf("%d",&k); switch (k){ case 1: printf("aを入力してください "); scanf("%d",&a); printf("bを入力してください "); scanf("%d",&b); printf("\n答えは a+b で %d です\n",a+b); break; case 2: printf("aを入力してください "); scanf("%d",&a); printf("bを入力してください "); scanf("%d",&b); printf("\n答えは aーb で %d です\n",a-b); break; case 3: printf("aを入力してください "); scanf("%d",&a); printf("bを入力してください "); scanf("%d",&b); printf("\n答えは a×b で %d です\n",a*b); break; case 4: printf("aを入力してください "); scanf("%d",&a); printf("bを入力してください "); scanf("%d",&b); printf("\n答えは a÷b で %d です\n",a/b); break; default: printf("明記してあるどれかの数字を再入力してください"); } }

  • break文でループを一気に抜けるには

    break文でループを一気に(2個以上) 抜けたい場合はどのようにすればいいのでしょうか? たとえば下のプログラムで1から2に抜けたい すなわちifとforの2つの中括弧を同時に抜けたい場合には どうやってbreak文を記述すればいいのでしょうか? (goto文は使わないということでお願いします。 int k=0; int i; for (i=1;i<10;i++){   k++;   printf("%d",k);   if (k == 5){     printf("a");     break;・・・・・・・・・1→   } } printf("finish");・・・・・・・・・2←

  • C言語switch文のcase記述について

    switch文のcaseがたくさんあるため、ソースファイルとして外だししたいと思っています。 ただ、switch文そのものはきちんと記述し、caseの部分だけを外だしできればと考えています。 例 switch (a) { case 1: case 2: : :(たくさん続く) 処理A; case 100; case 101; : : (これまたたくさん続く)  処理B; } を switch (a) { A_WO_SURU_JOUKEN  /* この記述を外だししたい */ 処理A; B_WO_SURU_JOUKEN /* 同じく */ 処理B; } といった具合にしてみたいということです。 ヘッダファイルを使う、defineでの記述で可能といったものを教えていただければ幸いです。

専門家に質問してみよう