重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

switch文で比較をさせたいのですが、その場合
switch()の括弧のなかはどうすれば良いのですか?
int a,b;

switch(){
case(a<b):
break
case(a>b):
break
}
どなたか知っている方おしえてください。

A 回答 (6件)

>初心者な質問で申し訳ありません。


全然問題ないですよ。

>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();

なかんじかな。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/03 23:32

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;
}
}
    • good
    • 0

もし、どうしてもswitchで比較させたいのなら、



switch(a<b) {
case 0:
論理式が偽のとき(a>=b)の処理
break;
default:
論理式が真のとき(a<b)の処理
break;
}

という手はありますが、そんなことをする人はいませんね。。結局case 0:の中でさらに判定が必要になります。
    • good
    • 0

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



参考URL:http://homepage1.nifty.com/toshio-k/prog/c/
    • good
    • 0

switch case は、ある変数がいろいろな値を取るときに、値によって処理をわけるために使います。



例題の場合は、比較結果による分岐なので、if文がむいていますね。

一般に、switch()の括弧の中に変数を入れ、
case 値: ~ break; でその処理を行うようにします。

int a;
switch(a){
case 0:
printf("0だよ");
break;
case 1:
printf("1だよ");
break;
default:
printf("それ以外だよ");
}

なんて風です。
    • good
    • 0

出来ません。


if文ではダメなのでしょうか?

この回答への補足

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

補足日時:2004/12/03 23:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!