サンプルプログラム cntl7.c
(8-7)三項演算子
三項演算子はif文を短く記述したいようなときに使用する演算子です。
x = ( a ? b: c ); a = 条件式 b = 演算式1 c = 演算式2 x = 演算式の結果が入ります
aは条件式で数値、変数、演算式などの値を返す式であればなんでもOKです(if文と同じです)。
bはaが真(true)のときに実行(左辺に代入)される演算式で値を返す式であればなんでもOKです。
cはaが偽(false)のときに実行(左辺に代入)される演算式で値を返す式であればなんでもOKです。
言葉で説明すると分かりにくいかと思いますのでサンプルプログラムと実行結果をご覧ください。
#include <stdio.h>
void main( void )
{
int i, j;
int x, y, z;
i = 0;
j = 5;
x = ( (i < j)? 10: 20);
y = ( (i > j)? 30: 40);
z = ( i ? 50: 60 );
printf( "i = %d, j = %d\n", i, j );
printf( "x = %d, y = %d, z = %d\n", x, y, z );
}
上記プログラムの実行結果
i = 0, j = 5 x = 10, y = 40, z = 60
まずxですが、iはjより小さいので真です。よって10が代入されます。
次にyですが、iはjより大きくないので偽です。よって40が代入されます。
最後にzですが、iは0なので偽です。よって60が代入されます。
三項演算子を用いますと1行でif~else~に相当する文を1行で記述できますので重宝することも多々あるのですが多用すると分かりにくくなりますのでほどほどに使用しましょう。