ページ 11

すいません。Cの質問です。

Posted: 2017年6月16日(金) 20:36
by 初見さん
以前質問させていただいたのですが、言語の指定がないとのことでしたので、C言語での質問とさせていただきます。

switch文だと、case1.2.3.....100みたいな感じで、任意の数字までを順番に羅列しないといけないのですが、1~20まではAを表示するプログラム、21~50まではBを表示するプログラムと言った感じで、まとめて自分で範囲を決めて、動作を分割、統一できないでしょうか?

Re: すいません。Cの質問です。

Posted: 2017年6月16日(金) 20:42
by みけCAT
初見さん さんが書きました:以前質問させていただいたのですが、言語の指定がないとのことでしたので、C言語での質問とさせていただきます。
質問ですのことですね。
普通にそっちに返信でもよかったと思いますが…。
初見さん さんが書きました:switch文だと、case1.2.3.....100みたいな感じで、任意の数字までを順番に羅列しないといけないのですが、1~20まではAを表示するプログラム、21~50まではBを表示するプログラムと言った感じで、まとめて自分で範囲を決めて、動作を分割、統一できないでしょうか?
switch文ではなくif文を使うといいでしょう。

コード:

/* xに分岐に使う値が入っているとする */
if (1 <= x && x <= 20) {
    /* Aを表示するプログラム */
} else if (21 <= x && x <= 50) {
    /* Bを表示するプログラム */
}
以下のように書くと、上手く動きません。

コード:

/* 間違ったサンプル */
/* xに分岐に使う値が入っているとする */
if (1 <= x <= 20) {
    /* Aを表示するプログラム */
} else if (21 <= x <= 50) {
    /* Bを表示するプログラム */
}
1 <= x <= 20は、(1 <= x) <= 20と解釈されます。
1 <= xは、xが1以上の時は1、1未満の時は0になるので、これは常に真になります。

Re: すいません。Cの質問です。

Posted: 2017年6月17日(土) 17:48
by 初見さん
伝説のハッカーさん、ありがとうございます!最近switch文を習ったもので、頭の中ではswitch文が最適としか考えていませんでした^^;
助かりました!!