C/C++の三項演算子(条件演算子)の基本と使い方
3つのオペランド(被演算子)を必要とする演算子は「三項演算子」と呼ばれます。C言語では ? : の記号で表され、「条件演算子」とも呼ばれています。三項演算子を使うと、コードの行数を削減でき、簡潔で読みやすいプログラムを書くことができます。
三項演算子の構文
式1 ? 式2 : 式3
まず式1が評価され、その結果が真(非ゼロ)であれば式2が実行され、偽(ゼロ)であれば式3が実行されます。if-else文を1行で書けるため、簡単な条件分岐に便利です。
C言語での三項演算子の例
サンプルコード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
この例では、変数 a の値が -1(非ゼロ=真)であるため、式2にあたる printf が実行され、b の値が出力されています。式1は必ず評価されますが、式2と式3のどちらが実行されるかは、式1の評価結果によって決まります。つまり、式1の結果がゼロ以外(負の値を含む)であれば式2が表示され、それ以外の場合は式3が表示されます。
戻り値の型について
三項演算子には戻り値の型が存在します。この型は式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 が真(-1 は 3 より小さい)と評価されるため、式2の printf が実行され、計算結果 2.5 が出力されています。
まとめ
三項演算子は、単純な条件分岐を短く記述できる便利な演算子です。ただし、複雑な条件やネストした分岐に乱用すると可読性が低下するため、シンプルな条件分岐での使用にとどめるのが良い実践とされています。
-
C/C++の左シフト・右シフト演算子の使い方を解説
C言語やC++には、ビット列を左右に移動させる「シフト演算子」が用意されています。シフト演算は、2のべき乗による乗算・除算を高速に行いたい場合などに活用される重要な演算です。この記事では、左シフト演算子(<<)と右シフト演算子(>>)の基本的な動作を、サンプルコードと実行結果とともにわかりやすく解説します。 左シフト演算子(<<)とは 左シフト演算子では、左オペランドの値が、右オペランドで指定されたビット数だけ左へ移動します。空いた下位のビットには0が埋められます。 たとえば「y << 2」と書くと、yのビット列が2ビット分だけ左にずれます。これ
-
C++の関係演算子とは?種類と使い方を実例付きで解説
C++プログラミングでは、2つの変数に格納された値を比較し、両者の大小関係や等価性を判定するために関係演算子を使用します。関係演算子は、if文などの条件分岐やfor文・while文などのループ処理において不可欠な要素であり、比較の結果はbool型(true / false)として返されます。C++で利用できる主な関係演算子は以下の通りです。演算子説明>より大きい(左辺が右辺より大きいか)>=以上(左辺が右辺以上か)<より小さい(左辺が右辺より小さいか)<=以下(左辺が右辺以下か)==等しい(左右の値が等しいか)!=等しくない(左右の値が異なるか)関係演算子の使い方これら