C++ 関係演算子・論理演算子マスターガイド:意思決定のための明確な解説
C++ 関係演算子
関係演算子は、2つのオペランド間の関係をチェックするために使用します。例えば、
// a が b より大きいかチェック
a > b;
ここで > が関係演算子です。a が b より大きいかどうかを判定します。
関係が true なら 1 を、false なら 0 を返します。
C++ で使用される関係演算子を以下の表にまとめました。
| 演算子 | 意味 | 例 |
|---|---|---|
== | 等しい | 3 == 5 は false |
!= | 等しくない | 3 != 5 は true |
> | より大きい | 3 > 5 は false |
< | より小さい | 3 < 5 は true |
>= | 以上 | 3 >= 5 は false |
<= | 以下 | 3 <= 5 は true |
== 演算子
等価演算子 == は以下を返します:
true- 両オペランドが等しい場合false- オペランドが異なる場合
例:
int x = 10;
int y = 15;
int z = 10;
x == y // false
x == z // true
注意: 関係演算子 == は代入演算子 = とは異なります。代入演算子は変数・定数・配列・ベクトルに値を割り当て、2つのオペランドを比較しません。
!= 演算子
不等価演算子 != は以下を返します:
true- 両オペランドが異なる場合false- 両オペランドが等しい場合
例:
int x = 10;
int y = 15;
int z = 10;
x != y // true
x != z // false
> 演算子
>演算子は以下を返します:
true- 左オペランドが右より大きい場合false- 左オペランドが右より小さい場合
例:
int x = 10;
int y = 15;
x > y // false
y > x // true
< 演算子
< 演算子は以下を返します:
true- 左オペランドが右より小さい場合false- 左オペランドが右より大きい場合
例:
int x = 10;
int y = 15;
x < y // true
y < x // false
>= 演算子
>= 演算子は以下を返します:
true- 左オペランドが右より大きいか等しい場合false- 左オペランドが右より小さい場合
例:
int x = 10;
int y = 15;
int z = 10;
x >= y // false
y >= x // true
z >= x // true
<= 演算子
<= 演算子は以下を返します:
true- 左オペランドが右より小さいか等しい場合false- 左オペランドが右より大きい場合
例:
int x = 10;
int y = 15;
x <= y // true
y <= x // false
関係演算子を文字列で使用する方法については、こちらのチュートリアルを参照してください。
C++ 論理演算子
論理演算子は、式が true か false かを判定します。true なら 1、false なら 0 を返します。
| 演算子 | 例 | 意味 |
|---|---|---|
&& | 式1 && 式2 | 論理積。すべてのオペランドが true の場合のみ true |
|| | 式1 || 式2 | 論理和。少なくとも1つのオペランドが true なら true |
! | !式 | 論理否定。オペランドが false の場合のみ true |
C++ 論理積演算子 &&
&& 演算子は以下を返します:
true- すべてのオペランドがtrueの場合のみfalse- 1つ以上のオペランドがfalseの場合
&& 演算子の真理値表
オペランド a と b とする。0 は false、1 は true を表す。
| a | b | a && b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
真理値表から、&& は a と b がともに true の場合のみ true を返すことがわかります。
注意: 論理積演算子 && をビット単位論理積演算子 & と混同しないでください。
例 1:C++ && 演算子
// C++ プログラム:&& 演算子の真理値表を実演
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = 9;
// false && false = false
cout << ((a == 0) && (a > b)) << endl;
// false && true = false
cout << ((a == 0) && (a < b)) << endl;
// true && false = false
cout << ((a == 5) && (a > b)) << endl;
// true && true = true
cout << ((a == 5) && (a < b)) << endl;
return 0;
}
出力
0 0 0 1
このプログラムでは、int 変数 a と b を宣言・初期化し、値 5 と 9 を設定。論理式を出力しています。
((a == 0) && (a > b))
a == 0 は a の値が 5 なので false に評価。a > b も a が b より小さいため false。これらを && で結合。真理値表通り false && false(0 && 0)は false(0)になります。これが出力結果です。同様に、&& の真理値表を完全に示す他3式も評価しています。
C++ 論理和演算子 ||
|| 演算子は以下を返します:
true- 1つ以上のオペランドがtrueの場合false- すべてのオペランドがfalseの場合のみ
|| 演算子の真理値表
| a | b | a || b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
a と b がともに false の場合のみ false を返すことがわかります。
例 2:C++ || 演算子
// C++ プログラム:|| 演算子の真理値表を実演
#include <iostream>
using namespace std;
int main() {
int a = 5;
int b = 9;
// false || false = false
cout << ((a == 0) || (a > b)) << endl;
// false || true = true
cout << ((a == 0) || (a < b)) << endl;
// true || false = true
cout << ((a == 5) || (a > b)) << endl;
// true || true = true
cout << ((a == 5) || (a < b)) << endl;
return 0;
}
出力
0 1 1 1
C++ 論理否定演算子 !
! は単項演算子で、オペランドを1つだけ取ります。
オペランドが false なら true を、true なら false を返します。
! 演算子の真理値表
オペランド a とする。0 は false、1 は true。
| a | !a |
|---|---|
| 0 | 1 |
| 1 | 0 |
例 3:C++ ! 演算子
// C++ プログラム:! 演算子の真理値表を実演
#include <iostream>
using namespace std;
int main() {
int a = 5;
// !false = true
cout << !(a == 0) << endl;
// !true = false
cout << !(a == 5) << endl;
return 0;
}
出力
1 0
a == 0 は a が 5 なので false に評価。しかし ! 演算子を a == 0 に適用するため、結果が反転し true になります。同様に !(a == 5) は a == 5 が true なので最終的に false を返します。
C言語
- C#抽象クラス実践チュートリアル:コード例で理解する設計パターン
- Guru99:包括的なオンラインチュートリアルとビジネスソフトウェアレビュー
- C#:Microsoftのモダンプログラミング言語の包括的概要
- C#ファイル操作実践ガイド:存在確認、読み書き、コピー、削除
- C#変数と演算子マスター:実例と解説で基礎を固める
- C++配列を関数に渡す完全ガイド:1次元・多次元配列の実例付き
- C++におけるコンストラクタを用いた動的初期化のマスター
- C#演算子完全ガイド:算術・関係・論理・ビット演算子など
- C++ switch文をマスター:構文、使い方、実践例
- C vs C++: 主な違いとそれぞれを選ぶべきケース
- C++ char型をマスター:宣言、ASCII、変換テクニック