三項演算(条件演算)

C言語には三項演算子という条件演算子が用意されています。
聞きなれない言葉だと思いますが、機能としてはif〜else文を演算子化したものだと思えばよいです。

if文についてまだ学習していない場合には、先に if文 を読んだ方が、こちらにも取り組みやすいと思います。

動かしてみよう

では、サンプルコードを動かしてみましょう。
変数a,bの大きい方の値を変数xへ代入するプログラムです。

実行できましたか。
a,bの値それぞれ変更してみての実行もしてみてください。
結果が変わることが確認できると思います。

では、解説に進みましょう。

解説

三項演算子の基本構文は下記です。

 条件 ? 処理TRUE : 処理FALSE;

? の前に書かれた条件が成立する場合は処理TRUE、成立しない場合は処理FALSEをおこないます。
処理TRUEと処理FALSEは : で区切ります。

三項演算子はif文と同じ振る舞いをおこなうため、下記のように書き換えが可能です。

/* 三項演算子 */
x = (a > b) ? a : b;

/* if〜else文 */
if(a > b)
{
  x = a;
}
else
{
  x = b;
}

ちょっとした条件式を簡潔に記述したい場合などにおいて、if文よりも三項演算子を用いると便利です。

また、三項演算子はネストさせて使うことも可能です。
少しイメージがわかないかもしれないので、別のサンプルコードで確認してみましょう。
変数a,b,cの一番大きい値を変数xへ代入するプログラムです。

ソースコードの可読性が一気に落ちましたね。。
ネストはできるのですが、無理に使う必要はないかと思います。
(分けて書いたり、if〜elseにした方が読みやすいです。)

まとめ

まとめです。

  • ? と : により、if〜elseのような処理がおこなえます。
  • 適切に使うことでif文よりも簡潔なコード記述ができます。
  • ネストした記述も可能ですが、読みにくいのでオススメしません。

以上です。
ではまた。

タイトルとURLをコピーしました