本文へスキップ
BecomeCoder

C言語コース · 第3章 制御構文 · レッスン9

else if と三項演算子 ― 複数条件の分岐と`? :`

ブラウザで完結

導入

3つ以上に分けたいときは else if を重ねます。短い分岐なら「三項演算子」で1行にも書けます。

説明

else if (条件) を上から順に見て、最初に合った枝だけが実行されます。

#include <stdio.h>

int main() {
    int score = 75;
    if (score >= 90) {
        printf("優\n");
    } else if (score >= 70) {
        printf("良\n");
    } else if (score >= 60) {
        printf("可\n");
    } else {
        printf("不可\n");
    }
    return 0;
}

条件 ? A : B は「条件が真なら A、偽なら B」を表す三項演算子です。値を選ぶ短い分岐に便利です。

#include <stdio.h>

int main() {
    int n = 7;
    printf("%s\n", n % 2 == 0 ? "偶数" : "奇数");   // 奇数
    int a = 5, b = 8;
    int big = (a > b ? a : b);   // 大きいほうを選ぶ
    printf("大きいのは %d\n", big);                 // 8
    return 0;
}

printf%s文字列を、%d は整数を差し込む書式です。三項演算子は式なので、printf の引数や変数への代入にそのまま使えます。

やってみよう

score の値を変えて、判定が変わることを確かめましょう。三項演算子の n も変えてみてください。

演習

int temp = 28; について、三項演算子で temp >= 25 なら 暑い、そうでなければ 快適 と表示してください(結果は 暑い)。

ヒント1を見る

printf("%s\n", temp >= 25 ? "暑い" : "快適");

実際に動かしてみよう

下のエディタにCを書いて「実行」を押すと、ブラウザ内のインタプリタで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(scanf を使う回は「標準入力」欄に値を入れてから実行します)。

C/C++ — ブラウザ内で実行

ブラウザ内でC/C++を動かす学習用インタプリタ(JSCPP)を読み込みます(入門向けのサブセットです)。
スクロールして表示された時点でも自動で読み込まれます。