ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
算術演算子とは
算術演算子は数値同士の四則演算と関連計算を行う演算子です。プログラミング言語の中でもっとも基本的な演算子で、ほとんどの言語が共通の記号(+ - * / %)を採用しています。一方、累乗、整数除算、インクリメントなどは言語によってサポート状況や挙動が異なります。
主要な算術演算子 一覧
| 演算子 | 名前 | 例 | 結果 |
|---|---|---|---|
+ | 加算(和) | 5 + 3 | 8 |
- | 減算(差) | 5 - 3 | 2 |
* | 乗算(積) | 5 * 3 | 15 |
/ | 除算(商) | 5 / 3 | 言語による(1 or 1.666...) |
% | 剰余(mod) | 5 % 3 | 2 |
** | 累乗(べき乗) | 2 ** 8 | 256(言語による) |
++ | インクリメント(+1) | i++ | 1 増やす |
-- | デクリメント(-1) | i-- | 1 減らす |
除算 / の挙動は言語で違う
もっとも混乱しやすいのが除算です。整数同士の / の結果は、言語によって整数になるか浮動小数になるかが異なります。
| 言語 | 5 / 2 | 整数除算の書き方 |
|---|---|---|
| Java / C / C++ / Go | 2(整数除算) | 同じ / |
| Python 3 | 2.5(浮動小数) | 5 // 2 で 2 |
| JavaScript | 2.5(浮動小数) | Math.floor(5 / 2) |
| Ruby | 2(整数) | 同じ / |
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 | 備考 |
|---|---|---|
| Python | 1 | 常に除数と同じ符号 |
| JavaScript / Java / C | -2 | 被除数と同じ符号 |
| Ruby | 1 | Python と同じ |
累乗 ** のサポート状況
| 言語 | 累乗演算子 |
|---|---|
| Python | 2 ** 8 |
| JavaScript(ES2016+) | 2 ** 8 |
| Ruby | 2 ** 8 |
| Java / C / Go | なし。Math.pow(2, 8) / math.Pow(2, 8) |
| Excel | 2 ^ 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 += b | a = 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 |
演算子の優先順位
算術演算子は数学と同じく 乗除 > 加減です。累乗は右結合(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 / 0 | 1 % 0 |
|---|---|---|
| JavaScript | Infinity | NaN |
| Python | ZeroDivisionError | ZeroDivisionError |
| Java(整数) | ArithmeticException | ArithmeticException |
| Java(浮動小数) | Infinity | NaN |
| C / C++ | 未定義動作(処理系依存) | 未定義動作 |
整数オーバーフロー
固定ビット幅の整数型を使う言語では、加算 / 乗算で桁あふれ(オーバーフロー)が起き、想定外の値になることがあります。
- Java:
int(32 bit)/long(64 bit)。オーバーフローしても例外は出ず、循環する - JavaScript: 通常の
Numberは 53 bit 精度。BigInt(123n)で任意精度 - 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
関連
- 演算子(全体) — 算術 / 比較 / 論理 / ビット など
- 比較演算子 —
== != < > - 論理演算子 —
&& || ! - ビット演算子 —
& | ^ << >> - 代入演算子 —
= += -=
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?