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

C言語入門講座

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

2022年5月22日

おゆ

組み込み系プログラマとして5年働いていた元エンジニアです。得意言語はC言語とC++。本サイトでは学生および新人組み込み系プログラマに向けてプログラミング知識をわかりやすく解説しています。

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

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

記事の内容

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

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・case・breakで複数条件分岐する方法

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

続きを見る

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

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

-C言語入門講座