記事には広告を含む場合があります。

C言語入門講座

【C言語】if・switchを使わない条件分岐、条件(3項)演算子

2022年5月22日

if・switchなしでも条件分岐する方法はあるの?
条件演算子って何?どうやって使うの?

こんな疑問にお答えします。

記事の内容

  • 条件演算子(3項演算子)の使い方
  • 条件演算子(3項演算子)の入れ子構造
oyu
元エンジニアの筆者が解説します。

ifやswitchを使わない条件分岐、条件演算子(三項演算子)の使い方

分岐先が2つだけならif・switchを使わなくても条件演算子で記述できます。

条件演算子の使い方

(式) ? (式が真の時に実行) : (式が偽の時に実行)

例:

#include <stdio.h>
void main()
{
    int num=1, max;
    num>0 ? printf("num>0\n") : printf("num<=0\n"); //①
    max = num>10 ? num : 10; //②
    printf("max=%d\n",max);
}

実行結果

num>0
max=10

例では2つの使い方を挙げました。

①は「num>0」が真か偽かで処理が変わります。numは1(num>0は真)なのでコロン「:」の左側にある「printf("num>0\n")」が実行されています。

②では「num>10」が真か偽かによってmaxに代入する値が変化します。numは10より小さい(num>10は偽)ので「:」右側にある10がmaxに代入されています。

条件演算子(三項演算子)の入れ子構造

条件演算子の中に条件演算子を入れて書けます。このような書き方を入れ子構造といいます。

例:

#include <stdio.h>
void main()
{
    int num=15, max;
    max=num>0 ? (num>10 ? 10 : num) : 0;
    printf("max=%d",max);
}

実行結果

max=10

「?」の右側の処理を条件演算子にできます。入れ子構造にすることでより細かく場合分けできます。

何重にも入れ子にするとコードが見にくくなるので注意です。上の例もちょっと見にくいですよね…

まとめ:条件演算子・if・switchの使い分け

条件分岐の記述方法はif、switch、条件演算子の3つがあります。条件演算子は少ない条件分岐をシンプルに書くのに適しています。条件が多い時はifかswitchが適しています。

ifとswitchの使い分けについてはこちら

【C言語】switchで複数条件を分岐させる方法とifとの違い

switchで条件分岐する方法を知りたい。ifとはどう使い分けたらいいの? こんなお悩みにお答えします。 記事の内容 switch, case, break, defaultの使い方 ifとの違い、使 ...

続きを見る

ブログランキング参加中。クリックしてもらえると励みになります。

ブログランキング・にほんブログ村へ

-C言語入門講座