条件演算子

 前回はif文以外の条件分岐の書き方としてswitch文をご紹介しました。もう一つ、条件分岐の書き方として条件演算子(三項演算子)というものをご紹介します。

 条件演算子は、凄く単純なif - else文の置き換えとして使えます。条件演算子を使うことで、条件分岐の命令がたった1行で済んでしまうのです。

 例えば、以下のようなプログラムがあったとします。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    printf("最初の処理\n");
    
    int year;
    int month;
    
    year = 2012;
    if(year % 4 == 0) {
        month = 29;
    } else {
        month = 28;
    }
    
    printf("%d年の2月は%d日あります\n", year, month);
    
    printf("最後の処理\n");
    
    return 0;
}

 上のプログラムのような書き方で、printf関数で2つ以上の変数の中身を表示することが可能です。

 上のプログラムは、yearで指定した年の2月が何日あるかを表示するプログラムです(西暦が100で割り切れる年は28日にする等の特例は省いています)。yearの値を変えてプログラムを実行してみて下さい。

 ここで書かれたif - else文は非常に単純なものです。このif - else文は、以下のように書き換えられます。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    printf("最初の処理\n");
    
    int year;
    int month;
    
    year = 2012;
    month = (year % 4 == 0) ? 29 : 28;      // if文を条件演算子で書き換えたもの
    
    printf("%d年の2月は%d日あります\n", year, month);
    
    printf("最後の処理\n");
    
    return 0;
}

 このように、

 「(変数) = (条件式) ? (条件が真のときに入れる値):(条件が偽のときに入れる値)」

 という形でif文ではない形で書くことも出来ます。この形が条件演算子(の書式)です。

■スポンサーリンク

このページの先頭へ