この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:guest
更新日時:2026-06-11 07:12:00

タイトル: 算術演算子
SEOタイトル: 算術演算子 完全ガイド(+ - * / % ** ++ -- / 整数除算 / 演算子の優先順位 / Java JavaScript Python)

この記事の要点
  • 算術演算子は数値の四則演算(+ - * /)剰余(%)累乗(**)インクリメント / デクリメント(++ --)を表す
  • 同じ / でも言語によって挙動が違う — Python は浮動小数除算Java / C / Go は整数同士なら整数除算
  • 剰余 %負の数や浮動小数での挙動が言語ごとに異なる
  • 累乗は Python / JavaScript(ES2016+)/ Ruby で **、Java / C では Math.pow()
  • ++ / --前置と後置で評価タイミングが違う。Python には存在しない

算術演算子とは

算術演算子は数値同士の四則演算と関連計算を行う演算子です。プログラミング言語の中でもっとも基本的な演算子で、ほとんどの言語が共通の記号(+ - * / %)を採用しています。一方、累乗、整数除算、インクリメントなどは言語によってサポート状況や挙動が異なります。

主要な算術演算子 一覧

演算子名前結果
+加算(和)5 + 38
-減算(差)5 - 32
*乗算(積)5 * 315
/除算(商)5 / 3言語による(1 or 1.666...)
%剰余(mod)5 % 32
**累乗(べき乗)2 ** 8256(言語による)
++インクリメント(+1)i++1 増やす
--デクリメント(-1)i--1 減らす

除算 / の挙動は言語で違う

もっとも混乱しやすいのが除算です。整数同士の / の結果は、言語によって整数になるか浮動小数になるかが異なります。

言語5 / 2整数除算の書き方
Java / C / C++ / Go2(整数除算)同じ /
Python 32.5(浮動小数)5 // 2 で 2
JavaScript2.5(浮動小数)Math.floor(5 / 2)
Ruby2(整数)同じ /

Python 3 の例

5 / 2     # 2.5    (浮動小数除算)
5 // 2    # 2      (整数除算 / floor)
-5 // 2   # -3     (Python の // は負方向に丸める)
5 % 2     # 1
5 ** 3    # 125    (累乗)

JavaScript の例

5 / 2          // 2.5
Math.floor(5 / 2)   // 2

5 % 2          // 1
2 ** 8         // 256(ES2016+)
Math.pow(2, 8) // 256(旧来)

let i = 1;
i++;           // 後置: 評価後に +1(戻り値は 1)
++i;           // 前置: +1 してから評価(戻り値は 2 になった後の値)

Java の例

int a = 5 / 2;       // 2 (整数除算)
double b = 5.0 / 2;  // 2.5(片方が double なら浮動小数)

double pow = Math.pow(2, 8); // 256.0

int i = 1;
int x = i++;   // x = 1, i = 2
int y = ++i;   // y = 3, i = 3

剰余 % の罠

剰余の結果の符号は言語ごとに微妙に違います。

言語-5 % 3備考
Python1常に除数と同じ符号
JavaScript / Java / C-2被除数と同じ符号
Ruby1Python と同じ

累乗 ** のサポート状況

言語累乗演算子
Python2 ** 8
JavaScript(ES2016+)2 ** 8
Ruby2 ** 8
Java / C / GoなしMath.pow(2, 8) / math.Pow(2, 8)
Excel2 ^ 8

インクリメント / デクリメント(前置と後置)

++ / -- は変数を 1 だけ増やす(減らす)演算子です。Java / JavaScript / C / C++ / C# などで使えます。Python には存在しません。Python では x += 1 と書きます。

let i = 5;
let a = i++;   // a = 5(後置: 評価してから加算), i = 6
let b = ++i;   // b = 7(前置: 加算してから評価), i = 7
形式意味
後置 i++式の値は変更前。その後に i を +1
前置 ++i先に i を +1。式の値は変更後

複合代入演算子

算術演算子と代入を組み合わせた複合代入もよく使います。

演算子意味
a += ba = a + b
a -= ba = a - b
a *= ba = a * b
a /= ba = a / b
a %= ba = a % b
a **= ba = a ** b

演算子の優先順位

算術演算子は数学と同じく 乗除 > 加減です。累乗は右結合2 ** 3 ** 2 = 2 ** 9 = 512)の言語が多いです。

2 + 3 * 4         # 14(* が先)
(2 + 3) * 4       # 20

# 累乗は右結合(Python / JavaScript)
2 ** 3 ** 2       # = 2 ** (3 ** 2) = 2 ** 9 = 512

浮動小数の精度問題

浮動小数の演算では誤差が出ます。お金の計算など正確さが必要な場合は、整数化(円→銭)か Decimal / BigDecimal 系のクラスを使います。

0.1 + 0.2          // 0.30000000000000004
(0.1 + 0.2) === 0.3 // false

// 対策: 整数化してから計算
(0.1 * 100 + 0.2 * 100) / 100   // 0.3

単項マイナス(符号反転)

-x のように単独で使う -単項マイナス演算子で、符号を反転します。+x も単項プラスとして使えますが、こちらは挙動が言語ごとに違うので注意が必要です。

const x = 5;
-x;            // -5
+"3";          // 3 (JS の単項 + は数値化)
+true;         // 1
+"abc";        // NaN

ゼロ除算

0 で割ったときの挙動も言語によります。

言語1 / 01 % 0
JavaScriptInfinityNaN
PythonZeroDivisionErrorZeroDivisionError
Java(整数)ArithmeticExceptionArithmeticException
Java(浮動小数)InfinityNaN
C / C++未定義動作(処理系依存)未定義動作

整数オーバーフロー

固定ビット幅の整数型を使う言語では、加算 / 乗算で桁あふれ(オーバーフロー)が起き、想定外の値になることがあります。

  • Java: int(32 bit)/ long(64 bit)。オーバーフローしても例外は出ず、循環する
  • JavaScript: 通常の Number は 53 bit 精度。BigInt123n)で任意精度
  • Python: 整数は任意精度で、オーバーフローしない
  • C / C++: 符号付き整数のオーバーフローは未定義動作

整数除算と商・余りの符号

「商」と「余り」の関係には常に a = (a / b) * b + (a % b) が成り立つと覚えると、各言語の符号挙動の差を整理しやすいです。

# Python: // は床関数、% は除数と同じ符号
-7 // 2     # -4
-7 % 2      # 1
# 検算: (-4) * 2 + 1 = -7  OK

# JavaScript / Java: 整数除算はゼロ方向、% は被除数と同じ符号
# -7 / 2 → -3, -7 % 2 → -1
# 検算: (-3) * 2 + (-1) = -7  OK

関連

  • 演算子(全体) — 算術 / 比較 / 論理 / ビット など
  • 比較演算子 — == != < >
  • 論理演算子 — &amp;&amp; || !
  • ビット演算子 — & | ^ << >>
  • 代入演算子 — = += -=