本記事では三項演算子の意味とc++での使い方について軽く説明します。
この前、友達のコードを見ていた時にこのようなコードがあった。
m_maxhP = (maxhp < 1) ? 1 : maxhp
このコードで特筆すべき点はコードの比較文に 「?」 が使われている事である。
今回はこのコードについて調べたので、本記事に残しておこうと思う。
今回使われていたこの 「?」 は 「三項演算子」 という
三項演算子の使い方は下記の通りである。
条件式 ? 式1 : 式2;
この文の意味は
・条件式がtrueの場合 -> 式1の結果が返る
・条件式がfalseの場合 -> 式2の結果が返る
という意味になる。
例 : c++の場合
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
この場合(a > b)はfalseになるので、maxにはb(つまり20)が代入されます。
「if文で処理した方がいいのでは?」 と思う方も居るかもしれないので
if文との違いを解説しておきます。
同じ処理をif文で書くと下記のとおりになります。
int max;
if(a > b)
max = a;
else
max = b;
つまり三項演算子は、 「簡単なif-else文を1行で書きたいとき」 に使える便利な書き方となるわけです。
おまけ
応用例
出力に使う:
cout << (x >= 0 ? "正の数" : "負の数") << endl;
初期化に使う:
int score = 85;
string result = (score >= 60) ? "合格" : "不合格";
※ 注意点
三項演算子は便利ですが、入れ子にすると読みづらくなるので、
複雑な条件分岐には普通の if を使うほうが良いです。
追記
2025/11/9
ちなみに三項演算子では 「return」 「break」 「continue」 等の制御構文は使えません。
例として、下記の様なコードは使えません。
三項演算子はあくまで 「値を入れ替える」 演算子だからです。
bool isFlag = false;
isFlag ? return : continue;