2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

三項演算子について

2
Last updated at Posted at 2025-11-09

本記事では三項演算子の意味と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;
2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?