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文よりも簡潔なコード記述ができます。
- ネストした記述も可能ですが、読みにくいのでオススメしません。
以上です。
ではまた。