演算子
計算や比較、論理演算の各種演算子を理解する
概要
演算子は、 値に対して何かの操作を行う記号やキーワードです。
例えば、+(足す)や <(より小さい)などが演算子です。
算術演算子
数値同士の計算に使う演算子です。
| 演算子 | 名称 | 例 | 結果 |
|---|---|---|---|
| + | 加算(足し算) | 10 + 3 | 13 |
| - | 減算(引き算) | 10 - 3 | 7 |
| * | 乗算(掛け算) | 10 * 3 | 30 |
| / | 除算(割り算) | 10 / 3 | 3 (整数同士) |
| % | 剰余(あまり) | 10 % 3 | 1 |
例
#include <iostream>
int main() {
int a = 10, b = 3;
std::cout << "a + b = " << (a + b) << std::endl; // 13
std::cout << "a - b = " << (a - b) << std::endl; // 7
std::cout << "a * b = " << (a * b) << std::endl; // 30
std::cout << "a / b = " << (a / b) << std::endl; // 3 (小数部分削除)
std::cout << "a % b = " << (a % b) << std::endl; // 1 (あまり)
return 0;
}
実行結果:
a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1
注意: 整数の割り算
10 / 3 は 3(小数部分は削除)です。
小数で計算したければ double を使います:
double x = 10.0 / 3.0;
std::cout << x << std::endl; // 3.33333
増減演算子
変数の値を1増やす、1減らすための演算子です。
| 演算子 | 説明 | 例 |
|---|---|---|
| ++ | 1増やす | x++ or ++x |
| -- | 1減らす | x-- or --x |
int x = 5;
x++; // x は 6 になる
std::cout << x << std::endl; // 6
x--; // x は 5 になる
std::cout << x << std::endl; // 5
比較演算子
2つの値を比較して、true(真)または false(偽)を返します。
| 演算子 | 意味 | 例 | 結果 |
|---|---|---|---|
| == | 等しい | 10 == 10 | true |
| != | 等しくない | 10 != 3 | true |
| < | より小さい | 10 < 20 | true |
| > | より大きい | 10 > 20 | false |
| <= | 以下 | 10 <= 10 | true |
| >= | 以上 | 10 >= 5 | true |
int a = 10, b = 20;
std::cout << (a == b) << std::endl; // 0 (false)
std::cout << (a != b) << std::endl; // 1 (true)
std::cout << (a < b) << std::endl; // 1 (true)
std::cout << (a > b) << std::endl; // 0 (false)
論理演算子
複数の条件を組み合わせるための演算子です。
| 演算子 | 意味 | 説明 | 例 |
|---|---|---|---|
| && | AND(かつ) | 両方 true ならば true | true && true = true |
| || | OR(または) | どちらか一つ true ならば true | true || false = true |
| ! | NOT(ではない) | 反対にする | !true = false |
int age = 25;
bool hasLicense = true;
// 年齢が18以上 AND 免許がある
std::cout << ((age >= 18) && hasLicense) << std::endl; // 1 (true)
// 年齢が18未満 OR 免許がない
std::cout << ((age < 18) || !hasLicense) << std::endl; // 0 (false)
代入演算子
値を変数に代入するための演算子です。
| 演算子 | の意味 | 例 | と同等 |
|---|---|---|---|
| = | 代入 | x = 5 | - |
| += | 加算して代入 | x += 3 | x = x + 3 |
| -= | 減算して代入 | x -= 2 | x = x - 2 |
| *= | 乗算して代入 | x *= 2 | x = x * 2 |
int x = 10;
x += 5; // x は 15 に
std::cout << x << std::endl; // 15
x -= 3; // x は 12 に
std::cout << x << std::endl; // 12
x *= 2; // x は 24 に
std::cout << x << std::endl; // 24
演算子の優先度
複数の演算子がある場合、優先度に従って計算されます。
基本的な優先度(高い順)
- () — 括弧
- *, /, % — 乗算・除算・剰余
- +, - — 加算・減算
- <, <=, >, >= — 比較
- ==, != — 等値比較
- && — AND
- || — OR
- = — 代入
例:
int result = 10 + 3 * 2; // 3 * 2 = 6, 10 + 6 = 16
int result2 = (10 + 3) * 2; // 10 + 3 = 13, 13 * 2 = 26
迷ったら括弧を使うことで、優先度を明確にできます。
ポイント
- 演算子は値に対する操作を行うもの
- 算術演算子: +, -, *, /, %(計算)
- 比較演算子: ==, !=, <, >(true/false を返す)
- 論理演算子: &&, ||, !(複数条件の結合)
- 演算子の優先度に注意。不安なら括弧を使う
よくある誤り
誤り1: = と == を混同
if (x = 10) { } // NG: これは比較ではなく代入!
if (x == 10) { } // OK: 正しい比較
誤り2: 整数除算の小数部分
int result = 10 / 3; // 3 (小数部分削除)
double result2 = 10.0 / 3; // 3.33333...
誤り3: 論理演算子の優先度
// これは何か?
if (x > 5 && y < 10 || z == 0) { }
// 迷ったら括弧を使おう
if ((x > 5 && y < 10) || (z == 0)) { }
やってみよう
練習1: 2つの数値を入力させ、加減乗除とあまりを計算・表示するプログラム。
練習2: ユーザーが18歳以上かどうかを判定するプログラム。
チャレンジ: 3つの数値を入力させ、その合計が100以上かつ最大値が50未満なら「条件を満たしている」と表示。
ヒント
&& を使って2つの条件を組み合わせます。
まとめ
- 演算子は、値を操作する記号
- 算術・比較・論理・代入など様々な種類がある
- 演算子の優先度を理解し、括弧で明確化する