C++演算子を徹底解説:種類、例、サンプルプログラム付き
演算子とは
C++において演算子とは、1つ以上のオペランドに対して演算を行う記号のことです。演算子には算術、論理、関係、ビット演算、代入など様々な種類があります。
例:
a = x + y;
ここでxとyはオペランド、+は加算演算子です。コンパイラはxとyを加算し、結果をaに格納します。
このチュートリアルで学ぶ内容:
- 演算子とは何か
- C++の演算子の種類
- 算術演算子
- 関係演算子
- 論理演算子
- ビット演算子
- 代入演算子
- その他の演算子(sizeof、カンマ、条件、優先順位)
C++の演算子の種類
C++は主に6つのカテゴリの演算子を定義しています:
- 算術演算子
- 関係演算子
- 論理演算子
- ビット演算子
- 代入演算子
- その他の演算子
算術演算子
これらの演算子は数学的計算を行います。
| 演算子 | 説明 |
|---|---|
| + | 2つのオペランドを加算 |
| - | 第1オペランドから第2オペランドを減算 |
| * | 2つのオペランドを乗算 |
| / | 分子を分母で除算 |
| % | 除算の余りを返す |
| ++ | 整数を1増やす |
| -- | 整数を1減らす |
サンプルプログラム:
#include <iostream>
using namespace std;
int main() {
int a = 11;
int b = 5;
int c;
cout << "a + b is :" << a+b << endl;
cout << "a - b is :" << a-b << endl;
cout << "a * b is :" << a*b << endl;
cout << "a / b is :" << a/b << endl;
cout << "a % b is :" << a%b << endl;
cout << "a++ is :" << a++ << endl;
cout << "a-- is :" << a-- << endl;
return 0;
}
出力:
コードの説明は簡潔さのため省略します。
関係演算子
これらの演算子はオペランドを比較し、ブール結果を返します。
| 演算子 | 説明 |
|---|---|
| == | 等価性をチェック |
| != | 非等価性をチェック |
| > | より大きい |
| < | より小さい |
| >= | 以上 |
| <= | 以下 |
サンプルプログラム:
#include <iostream>
using namespace std;
int main() {
int a = 11;
int b = 5;
cout << "a=11, b=5" << endl;
if (a == b) {
cout << "a == b is true" << endl;
} else {
cout << "a == b is false" << endl;
}
if (a < b) {
cout << "a < b is true" << endl;
} else {
cout << "a < b is false" << endl;
}
if (a > b) {
cout << "a > b is true" << endl;
} else {
cout << "a > b is false" << endl;
}
return 0;
}
出力:
論理演算子
論理演算子はブール式を結合します。
| 演算子 | 説明 |
|---|---|
| && | 論理AND – 両オペランドが非ゼロならtrue |
| || | 論理OR – 少なくとも一方が非ゼロならtrue |
| ! | 論理NOT – ブール値を反転 |
サンプルプログラム:
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 2, c = 6, d = 4;
if (a == b && c > d)
cout << "a equals to b AND c is greater than d\n";
else
cout << "AND operation returned false\n";
if (a == b || c > d)
cout << "a equals to b OR c is greater than d\n";
else
cout << "Neither a is equal to b nor c is greater than d\n";
if (!b)
cout << "b is zero\n";
else
cout << "b is not zero";
return 0;
}
出力:
ビット演算子
ビット演算子は整数値の個々のビットに対して演算を行います。
| 演算子 | 説明 |
|---|---|
| & | ビット単位AND – 両ビットが1なら1 |
| | | ビット単位OR – 少なくとも一方が1なら1 |
| ^ | ビット単位XOR – ビットが異なるなら1 |
| << | 左シフト – ビットを左へシフト、0で埋める |
| >> | 右シフト – ビットを右へシフト、下位ビットを捨てる |
| ~ | ビット単位NOT – すべてのビットを反転 |
サンプルプログラム:
#include <iostream>
using namespace std;
int main() {
unsigned int p = 60; // 0011 1100
unsigned int q = 13; // 0000 1101
int z = 0;
z = p & q;
cout << "p&q is : " << z << endl; // 12
z = p | q;
cout << "p|q is : " << z << endl; // 61
z = p ^ q;
cout << "p^q is : " << z << endl; // 49
z = ~p;
cout << "~p is : " << z << endl; // -61
z = p << 2;
cout << "p<<2 is: " << z << endl; // 240
z = p >> 2;
cout << "p>>2 is : " << z << endl; // 15
return 0;
}
出力:
代入演算子
これらの演算子は変数に値を代入し、多くの場合算術演算と組み合わせます。
| 演算子 | 説明 |
|---|---|
| = | 単純代入 |
| += | 加算して代入 |
| -= | 減算して代入 |
| *= | 乗算して代入 |
| /= | 除算して代入 |
サンプルプログラム:
#include <iostream>
using namespace std;
int main() {
int x = 5;
cout << "Initial value of x is " << x << "\n";
x += 5;
cout << "x += 5 gives :" << x << "\n";
x -= 5;
cout << "x -= 5 gives : " << x << "\n";
x *= 5;
cout << "x *= 5 gives :" << x << "\n";
x /= 5;
cout << "x /= 5 gives : " << x << "\n";
return 0;
}
出力:
その他の演算子
sizeof演算子
型またはオブジェクトのサイズをバイト単位で返します。
例:
#include <iostream>
using namespace std;
int main() {
cout << "Size of int : " << sizeof(int) << "\n";
cout << "Size of char : " << sizeof(char) << "\n";
cout << "Size of float : " << sizeof(float) << "\n";
cout << "Size of double : " << sizeof(double) << "\n";
return 0;
}
出力:
カンマ演算子
式のシーケンスを実行し、最後の式の値を返します。
例:
#include <iostream>
using namespace std;
int main() {
int x, y;
y = 100;
x = (y++, y + 10, 99 + y);
cout << x;
return 0;
}
出力:
条件演算子
三項演算子とも呼ばれ、条件を評価して2つの式のいずれかを返します。
構文:condition ? expr1 : expr2
例:
#include <iostream>
using namespace std;
int main() {
int a = 1, b;
b = (a < 10) ? 2 : 5;
cout << "value of b: " << b << endl;
return 0;
}
出力:
演算子の優先順位
1つの式に複数の演算子が現れる場合、優先順位ルールが評価順序を決定します。高い順から:
(), [], *, /, %, +/-, <<, >>, ==, !=, ^, |, &&, ||, ?:, =, +=, -=, *=, /=
まとめ
- 演算子はC++で計算と論理を行うための構成要素
- 算術演算子は基本的な数学を処理
- 関係演算子は比較を可能にする
- 論理演算子はブール論理をサポート
- ビット演算子は個々のビットを操作
- 代入演算子は値を格納し、多くの場合算術と組み合わせる
- sizeof演算子は型のメモリフットプリントを明らかにする
- カンマ演算子は式をシーケンス化
- 条件演算子は簡潔なインライン決定を提供
C言語
- バイオチップ:定義、種類、現代バイオテクノロジーにおける応用
- C#演算子完全ガイド:C#における演算子の包括的解説
- C++演算子完全ガイド:算術・代入・関係・論理・ビット演算子と実例
- C++ switch文をマスター:構文、使い方、実践例
- C++動的配列の確保をマスター:コード例付き実践ガイド
- C++演算子オーバーロード:コード例付き実践ガイド
- C++構造体を実例で徹底解説
- C++のstd::listをマスターする:構文、関数、実践例
- C++ structとclassの違い:構文、特徴、使い分けのベストプラクティス
- C#抽象クラス実践チュートリアル:コード例で理解する設計パターン
- C++オーバーロード完全マスター:関数と演算子のオーバーロード