C++
 Computer >> コンピューター >  >> プログラミング >> C++

C/C++における三項演算子「? :」の使い方と仕組みを解説

三項演算子とは?

「?」演算子は、3つのオペランド(被演算子)を必要とすることから三項演算子と呼ばれています。表記は「? :」という形で、「条件演算子」とも呼ばれます。この演算子を使うことで、コードの行数を削減でき、処理の効率も向上します。

基本構文

C言語における三項演算子の構文は以下の通りです。

式1 ? 式2 : 式3

まず式1が評価され、その結果が真(非ゼロ)であれば式2が、偽(ゼロ)であれば式3が実行されます。

サンプルコード1

#include <stdio.h>

int main() {
    int a = -1;
    double b = 26.4231;
    int c = a ? printf("True value : %lf", b) : printf("False value : 0");
    return 0;
}

実行結果

True value : 26.423100

評価の仕組み

式1は必ず評価されますが、式2と式3は式1の評価結果に依存します。式1の結果がゼロ以外(正負どちらでも可)の場合は式2が表示され、それ以外の場合は式3が表示されます。上記の例では変数 a の値が -1(非ゼロ=真)であるため、式2側の printf が実行されています。

戻り値の型について

三項演算子には戻り値の型が存在します。この型は式2の型によって決まり、さらに式3が式2の型へ変換可能であることも求められます。もし両者が互換性のない型であれば、コンパイル時にエラーが発生します。

サンプルコード2

#include <stdio.h>

int main() {
    int x = -1, y = 3;
    double b = x + y + 0.5;
    int c = x < y ? printf("True value : %lf", b) : printf("False value : 0");
    return 0;
}

実行結果

True value : 2.500000

この例では、比較式 x < y が真となるため、式2の printf が呼び出され、計算結果「2.500000」が出力されます。

まとめ

三項演算子「? :」は、if-else文を1行で簡潔に書ける便利な演算子です。特に単純な条件分岐や値の代入において可読性を高める効果がありますが、複雑な条件を詰め込みすぎると逆に読みづらくなるため、適度な使用を心がけましょう。

  1. Windowsで使えるC++開発向けおすすめIDE 7選

    ```html 大規模なプロジェクトをプレーンなテキストエディターだけで管理するのは困難です。こうしたケースではIDE(統合開発環境)を使った方が、生産性が向上しストレスも大幅に軽減されます。IDEにはさまざまな種類があり、自分のニーズに合ったものを選ぶことが重要です。ここでは、Windowsで利用できる優れたC/C++向けIDEをご紹介します。 1. Visual Studio Microsoftが開発した定番IDEです。Windows上でのC++プログラムの構築・開発・プロファイリングにおいて、最高クラスのツール群を備えています。豊富なプラグインストアも魅力で、Azure、PowerShe

  2. Pythonのis演算子とは何をするもの?同一性判定の仕組みをわかりやすく解説

    Pythonには、is と is not という2つの「同一性演算子(identity operators)」が用意されています。Pythonインタプリタは、メモリ上に存在するすべてのオブジェクトに対して、一意の識別番号(id)を自動的に割り当てます。同一性演算子は、この識別番号を使って、2つのオブジェクトが同じ実体であるかどうかを判定します。 is 演算子は、2つのオブジェクトの id() の値が一致していれば True を返し、異なっていれば False を返します。逆に is not は、その真逆の結果を返します。 実際の動作を確認してみよう >>> a = 10 &g