【C++学習|豆知識】C++コードをスマートに!三項演算子で条件分岐を一行で記述する方法

導入

C++でプログラミングをしていると、単純な条件分岐のために「if-else文」を書いてしまい、コードが冗長になってしまうことはありませんか?例えば、変数の代入や関数の引数渡しにおいて、「条件によって値を切り替えたいだけ」という場面は非常に多いです。そんな時に役立つのが「三項演算子」です。これを使うことで、可読性を損なわずにコードを劇的に短く、スマートに記述できるようになります。

基礎知識

三項演算子は、C++において唯一「3つのオペランド(引数)」をとる演算子です。別名「条件演算子」とも呼ばれます。
一般的なif-else文が「処理の流れ」を制御するのに対し、三項演算子は「値を返す」ことに特化しています。構文は「条件式 ? 真の場合の値 : 偽の場合の値」という形式です。条件式が真(true)であれば「真の場合の値」が評価され、偽(false)であれば「偽の場合の値」が評価されます。

実装/解決策

三項演算子を使う最大のメリットは、変数に値を代入する際、if文を使わずに初期化や代入を完了できる点です。これにより、変数をconst(定数)として定義しつつ、条件に応じて値を決定するという、より堅牢なコードを書きやすくなります。

サンプルプログラム

以下のコードは、2つの数値から大きい方を選び、さらにその値が偶数か奇数かを判定して文字列として保持する例です。

#include
include

int main() {
int a = 10;
int b = 25;

// 1. 三項演算子の基本:大きい方をmaxに代入
int max = (a > b) ? a : b;
std::cout << "大きい値は: " << max << std::endl; // 2. 三項演算子の応用:文字列の代入 // 条件が真なら "偶数" 、偽なら "奇数" を代入 std::string result = (max % 2 == 0) ? "偶数" : "奇数"; std::cout << max << " は " << result << " です。" << std::endl; return 0; }

応用・注意点

三項演算子を使う際に最も注意すべき点は「ネスト(入れ子)」です。
例えば「条件A ? (条件B ? 値1 : 値2) : 値3」のように三項演算子を重ねると、コードが極めて読みづらくなり、バグの温床となります。条件が複雑になる場合は、素直にif-else文や関数化を検討しましょう。
また、三項演算子は「値を返す」式であるため、if文のように「条件に応じて異なる関数を呼び出す」といった制御フローの代わりとして使うことは避けるのが無難です(無理に行うと意図しない動作や可読性の低下を招きます)。「値を決定する」という用途に絞って使うのが、現場でのベストプラクティスです。

コメント

タイトルとURLをコピーしました