C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
C++ 演算子
このチュートリアルでは、C++のさまざまな演算子のタイプを実例とともに学習します。プログラミングにおいて、演算子は値や変数に対して操作を行う記号です。
演算子は変数や値に対して操作を行う記号です。例えば、+ は加算に、- は減算に使用される演算子です。
C++の演算子は6種類に分類できます:
- 算術演算子
- 代入演算子
- 関係演算子
- 論理演算子
- ビット演算子
- その他の演算子
1. C++ 算術演算子
算術演算子は変数やデータに対して算術演算を行います。例:
a + b;
ここでは + 演算子で変数 a と b を加算しています。同様に様々な算術演算子があります。
| 演算子 | 演算 |
|---|---|
+ | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余演算(除算の余り) |
実例 1: 算術演算子
#include <iostream>
using namespace std;
int main() {
int a, b;
a = 7;
b = 2;
// a と b の和を出力
cout << "a + b = " << (a + b) << endl;
// a と b の差を出力
cout << "a - b = " << (a - b) << endl;
// a と b の積を出力
cout << "a * b = " << (a * b) << endl;
// a を b で割った商を出力
cout << "a / b = " << (a / b) << endl;
// a を b で割った余りを出力
cout << "a % b = " << (a % b) << endl;
return 0;
}
出力
a + b = 9 a - b = 5 a * b = 14 a / b = 3 a % b = 1
+, -, * は期待通り加算・減算・乗算を計算します。
/ 除算演算子
プログラム内の (a / b) に注目してください。/ は除算演算子です。
上記例から分かる通り、整数を整数で割ると商が得られます。しかし、除数または被除数のいずれかが浮動小数点数なら、結果は小数になります。
C++では: 7/2 は 3 7.0 / 2 は 3.5 7 / 2.0 は 3.5 7.0 / 2.0 は 3.5
% 剰余演算子
剰余演算子 % は余りを計算します。a = 9 を b = 4 で割ると、余りは 1 です。
% 演算子は整数でのみ使用可能です。インクリメントとデクリメント演算子
C++にはインクリメント ++ とデクリメント -- 演算子もあります。
++はオペランドの値を 1 増やす--は 1 減らす
例:
int num = 5;
// インクリメント演算子
++num; // 6
ここでは ++num; で num の値が 1 増えます。
実例 2: インクリメント/デクリメント演算子
// インクリメントとデクリメント演算子の動作
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 100, result_a, result_b;
// aを1増やし結果をresult_aに格納
result_a = ++a;
cout << "result_a = " << result_a << endl;
// bを1減らし結果をresult_bに格納
result_b = --b;
cout << "result_b = " << result_b << endl;
return 0;
}
出力
result_a = 11 result_b = 99
上記では ++ と -- を プレフィックス(++a, --b) として使用しました。しかし ポストフィックス(a++, b--) としても使用可能です。
詳細は「インクリメントとデクリメント演算子」を参照してください。
2. C++ 代入演算子
C++では、代入演算子で変数に値を代入します。例:
// a に 5 を代入
a = 5;
ここでは変数 a に値 5 を代入しています。
| 演算子 | 例 | 等価 |
|---|---|---|
= | a = b; | a = b; |
+= | a += b; | a = a + b; |
-= | a -= b; | a = a - b; |
*= | a *= b; | a = a * b; |
/= | a /= b; | a = a / b; |
%= | a %= b; | a = a % b; |
実例 3: 代入演算子
#include <iostream>
using namespace std;
int main() {
int a, b;
// 2 を a に代入
a = 2;
// 7 を b に代入
b = 7;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "\nAfter a += b;" << endl;
// a と b の和を a に代入
a += b; // a = a + b
cout << "a = " << a << endl;
return 0;
}
出力
a = 2 b = 7 After a += b; a = 9
3. C++ 関係演算子
関係演算子は2つのオペランド間の関係をチェックします。例:
// a が b より大きいかチェック
a > b;
ここでは > が関係演算子で、a が b より大きいかどうかを判定します。
関係が true なら 1、false なら 0 を返します。
| 演算子 | 意味 | 例 |
|---|---|---|
== | 等しい | 3 == 5 は false |
!= | 等しくない | 3 != 5 は true |
> | より大きい | 3 > 5 は false |
< | より小さい | 3 < 5 は true |
>= | 以上 | 3 >= 5 は false |
<= | 以下 | 3 <= 5 は true |
実例 4: 関係演算子
#include <iostream>
using namespace std;
int main() {
int a, b;
a = 3;
b = 5;
bool result;
result = (a == b); // false
cout << "3 == 5 is " << result << endl;
result = (a != b); // true
cout << "3 != 5 is " << result << endl;
result = a > b; // false
cout << "3 > 5 is " << result << endl;
result = a < b; // true
cout << "3 < 5 is " << result << endl;
result = a >= b; // false
cout << "3 >= 5 is " << result << endl;
result = a <= b; // true
cout << "3 <= 5 is " << result << endl;
return 0;
}
出力
3 == 5 is 0 3 != 5 is 1 3 > 5 is 0 3 < 5 is 1 3 >= 5 is 0 3 <= 5 is 1
4. C++ 論理演算子
論理演算子は式が true か false かを判定します。true なら 1、false なら 0 を返します。
| 演算子 | 例 | 意味 |
|---|---|---|
&& | expression1 && expression2 | 論理積(AND)。 すべてのオペランドが真のときのみ真。 |
|| | expression1 || expression2 | 論理和(OR)。 少なくとも1つのオペランドが真なら真。 |
! | !expression | 論理否定(NOT)。 オペランドが偽のときのみ真。 |
C++では論理演算子は意思決定でよく使われます。理解を深めるために例を見てみましょう:
a = 5, b = 8 とすると、
(a > 3) && (b > 5) は true
(a > 3) && (b < 5) は false
(a > 3) || (b > 5) は true
(a > 3) || (b < 5) は true
(a < 3) || (b < 5) は false
!(a < 3) は true
!(a > 3) は false
実例 5: 論理演算子
#include <iostream>
using namespace std;
int main() {
bool result;
result = (3 != 5) && (3 < 5); // true
cout << "(3 != 5) && (3 < 5) is " << result << endl;
result = (3 == 5) && (3 < 5); // false
cout << "(3 == 5) && (3 < 5) is " << result << endl;
result = (3 == 5) && (3 > 5); // false
cout << "(3 == 5) && (3 > 5) is " << result << endl;
result = (3 != 5) || (3 < 5); // true
cout << "(3 != 5) || (3 < 5) is " << result << endl;
result = (3 != 5) || (3 > 5); // true
cout << "(3 != 5) || (3 > 5) is " << result << endl;
result = (3 == 5) || (3 > 5); // false
cout << "(3 == 5) || (3 > 5) is " << result << endl;
result = !(5 == 2); // true
cout << "!(5 == 2) is " << result << endl;
result = !(5 == 5); // false
cout << "!(5 == 5) is " << result << endl;
return 0;
}
出力
(3 != 5) && (3 < 5) is 1 (3 == 5) && (3 < 5) is 0 (3 == 5) && (3 > 5) is 0 (3 != 5) || (3 < 5) is 1 (3 != 5) || (3 > 5) is 1 (3 == 5) || (3 > 5) is 0 !(5 == 2) is 1 !(5 == 5) is 0
論理演算子プログラムの解説
(3 != 5) && (3 < 5)は両オペランドが 1(真)なので 1(3 == 5) && (3 < 5)は(3 == 5)が 0(偽)なので 0(3 == 5) && (3 > 5)は両オペランドが 0 なので 0(3 != 5) || (3 < 5)は両オペランドが 1 なので 1(3 != 5) || (3 > 5)は(3 != 5)が 1 なので 1(3 == 5) || (3 > 5)は両オペランドが 0 なので 0!(5 == 2)はオペランド(5 == 2)が 0 なので 1!(5 == 5)はオペランド(5 == 5)が 1 なので 0
5. C++ ビット演算子
C++では、ビット演算子で個々のビットに対する演算を行います。char と int 型でのみ使用可能です。
| 演算子 | 説明 |
|---|---|
& | ビット単位 AND |
| | ビット単位 OR |
^ | ビット単位 XOR |
~ | ビット単位 1の補数 |
<< | ビット単位 左シフト |
>> | ビット単位 右シフト |
詳細は「C++ ビット演算子」を参照してください。
6. その他の C++ 演算子
C++でよく使われるその他の演算子の一覧です。これらは後のチュートリアルで学びます。
| 演算子 | 説明 | 例 |
|---|---|---|
sizeof | データ型のサイズを返す | sizeof(int); // 4 |
?: | 条件に基づいて値を返す | string result = (5 > 0) ? "even" : "odd"; // "even" |
& | オペランドのメモリアドレスを表す | # // numのアドレス |
. | 構造体変数やクラスオブジェクトのメンバーにアクセス | s1.marks = 92; |
-> | ポインタでクラス/構造体変数にアクセス | ptr->marks = 92; |
<< | 出力値を表示 | cout << 5; |
>> | 入力値を取得 | cin >> num; |
C言語
- C#演算子完全ガイド:C#における演算子の包括的解説
- C++データ型完全ガイド:基本型、修飾子、ベストプラクティス
- C++コメント完全ガイド:読みやすく保守しやすいコードのためのベストプラクティス
- C++クラステンプレート完全ガイド:実践的なジェネリックプログラミング
- C言語演算子完全ガイド:算術・関係・論理・ビット演算子
- C++演算子を徹底解説:種類、例、サンプルプログラム付き
- C言語演算子完全ガイド:種類、機能、実例付き解説
- C++プログラミング言語:概要と主要機能
- C++定数とリテラル完全解説:型、構文、ベストプラクティス
- Python 演算子完全マスター: 包括的ガイド
- Java演算子をマスター:種類、構文、実践例