C++の**条件演算子(conditional operator)**は、if ~ else
文のような処理を、より簡潔に1行で書くことができる便利な構文です。本記事では、条件演算子の仕組みと注意点を、サンプルコードを使ってやさしく解説いたします。
目次
サンプルコード(C++)
以下のコードは、入力された数値に応じて異なるコースを選択し、対応する文字を出力する処理を、条件演算子を使って記述した例です。
#include <iostream>
using namespace std;
int main()
{
int selection;
char course;
cout << "コース番号を入力してください。" << endl;
cin >> selection;
course = (selection == 2) ? 'X' : 'Y';
cout << course << "コースが選択されました。" << endl;
return 0;
}
コードの解説
このプログラムの処理は以下の通りです。
- ユーザーに数値(コース番号)の入力を求めます。
- 入力された値が
2
であれば、'X'
を変数course
に代入します。 - それ以外の値であれば、
'Y'
を代入します。 - 最終的に、選択されたコースをメッセージとして出力します。
条件演算子の構文
変数 = (条件式) ? 真の場合の値 : 偽の場合の値;
条件式
:評価される論理式(例:selection == 2
)?
:条件が真のときに使う値と偽のときの値を分岐させる記号:
:条件が偽だったときに選ばれる値を指定
この構文は、if ~ else
の処理を1行にまとめたいときに便利です。
よくある間違いと注意点
代入忘れ
以下のように、=
を書き忘れると値が代入されず無意味な処理になります。
ans == (res == 1) ? 'A' : 'B'; // 誤り:比較演算子(==)になっている
正しくは次のように、**代入演算子(=)**を使います。
ans = (res == 1) ? 'A' : 'B'; // 正しい書き方
if文との比較
// 条件演算子を使った場合
course = (selection == 2) ? 'X' : 'Y';
// if ~ else を使った場合
if (selection == 2) {
course = 'X';
} else {
course = 'Y';
}
このように、短くシンプルに記述したい場合は条件演算子が便利です。ただし、複雑な処理を含む場合は、可読性の観点から if ~ else
の方が適していることもあります。
まとめ
- 条件演算子は「簡易的なif文」として使える便利な構文です。
(条件) ? 値1 : 値2
という形式で、条件に応じて2つの値から1つを選びます。- 単純な代入処理をコンパクトに書きたいときに有効ですが、過度な使用は可読性を損なう恐れがあるため注意が必要です。
C++の文法を効率的に活用するために、ぜひ条件演算子も使いこなせるようになっておきましょう。