算術運算子對照表
| 運算子 | 名稱 | 範例 | 優先序 | 結合性 |
+ | 一元正號 / 加法 | +5 / a + b | 高 / 低 | 右 / 左 |
- | 一元負號 / 減法 | -5 / a - b | 高 / 低 | 右 / 左 |
* | 乘法 | a * b | 中 | 左 |
/ | 除法 | a / b | 中 | 左 |
% | 餘數 (非模數) | a % b | 中 | 左 |
整數除法與餘數陷阱
int a = 7, b = 3;
int div = a / b; // 2 (截尾向零)
int rem = a % b; // 1
// 負數餘數:符號跟隨被除數 (C# 行為)
-7 % 3 = -1
7 % -3 = 1
-7 % -3 = -1
// 數學模數 (永非負) 需自行調整
int mod = ((a % b) + b) % b;
浮點數精度與比較
double d1 = 0.1 + 0.2; // 0.30000000000000004
bool eq = d1 == 0.3; // false!
// 正確比較:容差法
bool AlmostEqual(double a, double b, double epsilon = 1e-10)
=> Math.Abs(a - b) < epsilon;
// decimal 適合財務計算 (128-bit, 28-29 位有效數字)
decimal m1 = 0.1m + 0.2m; // 0.3 精確
溢位檢查與 checked/unchecked
int max = int.MaxValue;
// 預設 unchecked:溢位回繞
int overflow = max + 1; // -2147483648
// 區塊檢查
checked {
int crash = max + 1; // OverflowException
}
// 運算式檢查
int safe = checked(max + 1);
// 編譯器選項:/checked+ 全專案啟用
Math 類別常用方法
| 方法 | 說明 | 範例 |
| Abs | 絕對值 | Math.Abs(-5) = 5 |
| Max/Min | 最大/最小值 | Math.Max(3,7) = 7 |
| Sqrt | 平方根 | Math.Sqrt(16) = 4 |
| Pow | 冪次 | Math.Pow(2,10) = 1024 |
| Round | 四捨五入 (銀行家算法) | Math.Round(2.5) = 2 |
| Floor/Ceiling | 向下/向上取整 | Math.Floor(2.9) = 2 |
| Log/Log10 | 自然/常用對數 | Math.Log(Math.E) = 1 |
| Sin/Cos/Tan | 三角函數 (弧度) | Math.Sin(Math.PI/2) = 1 |
| Clamp | 限制範圍 (C# 7+) | Math.Clamp(15, 0, 10) = 10 |
進階數值運算
BigInteger (System.Numerics):任意大小整數
Complex:複數運算
Vector<T> / Matrix4x4:SIMD 向量化運算
Random.Shared.Next() (C# 9+):執行緒安全亂數
運算子優先序完整表 (高→低)
1. 主運算式: x.y, f(), a[i], x++, x--, new, typeof, checked, unchecked
2. 一元: +, -, !, ~, ++x, --x, (T)x, await, &, *, -> (指標)
3. 乘法性: *, /, %
4. 加法性: +, -
5. 位移: <<, >>
6. 關係/型別測試: <, >, <=, >=, is, as
7. 等值: ==, !=
8. 邏輯 AND: &
9. 邏輯 XOR: ^
10. 邏輯 OR: |
11. 條件 AND: &&
12. 條件 OR: ||
13. Null 合併: ??
14. 條件: ?:
15. 指派: =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, ??=
16. Lambda: =>




本文對應《叩響 C# 之門》第 3.1 節算術運算子教學內容