WisdomSoft - for your serial experiences.

2.12 条件演算子

条件演算子は条件となる項によって評価する項を切り替えることができる演算子で、条件によって式の結果を分岐させることができます。

2.12.1 評価対象の切り替え

通常、プログラムはソースコードに記述された命令に従って順番に実行されます。条件によってプログラムの流れを変更するには、後述する制御文を使わなければなりません。しかし、制御文を使わなくても、式の中で評価する値を選択する方法が用意されています。

条件によって評価する値を選択する条件演算子(conditional operator)は、唯一 3 つの項を受け取る 3 項演算子でもあります。条件演算子は ?: 演算子とも表されます。

条件演算子
条件式 ? 式1 : 式2

条件式には bool 型の整数値を指定します。この値が true の場合は式1が評価され、そうでなければ式2が評価されるという仕組みです。条件式の結果によって、条件演算子の返す結果が式1になるか、式2になるかが分かれます。

式1と式2には任意の値を指定できますが、双方の値には互換性が無ければなりません。例えば式1に整数、式2に文字列を指定するということはできません。片方が整数型である場合、他方も整数型と互換性のある型でなければエラーとなります。

条件演算子を用いることで、式中の項を条件によって切り替えられます。例えば x 変数が 100 より小さければ y 変数に x 変数の値を代入し、そうでなければ y 変数に 100 を代入するという条件は、以下のように記述できます。

y = x < 100 ? x : 100

上記の式は、代入演算子の右項に条件演算子が用いられています。 x < 100 の評価結果が true であれば x が、そうでなければ 100 が結果として返されます。よって、y 変数に代入される値は x < 100 の評価結果によって分岐することになります。

コード1
#include <iostream>

int main()
{
	int x, y;
	
	std::cout << "x変数の値を入力してください>";
	std::cin >> x;
	
	y = x < 100 ? x : 100;
	
	std::cout << "x=" << x << "\n";
	std::cout << "y=" << y << "\n";
	return 0;
}
実行結果
コード1 実行結果

コード1は整数型の x 変数に入力された値によって y 変数に代入される値が決まります。x 変数の値が 100 より小さければ、条件演算子の結果として x 変数が返され、そうでなければ整数リテラル 100 が返されます。