首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 運算子優先序與整數除法陷阱完整指南

     編輯:關於C語言

運算子優先序總表 (高到低)


基本:      . () [] x++ x-- new typeof checked unchecked -> ::
一元:      + - ! ~ ++x --x (T)x true false & sizeof
乘除:      * / %
加減:      + -
移位:      << >>
關系:      < > <= >= is as
相等:      == !=
邏輯 AND:  &
邏輯 XOR:  ^
邏輯 OR:   |
條件 AND:  &&
條件 OR:   ||
三元:      ?:
Null合併:  ??
指派:      = += -= *= /= %= &= |= ^= <<= >>= 
Lambda:    =>

整數除法陷阱

整數 / 整數 = 整數 (截尾),不會自動升級為浮點數:


double d;
d = 14 / 4;      // 3 (整數除法後再隱性轉 double)
d = 14 / 4.0;    // 3.5 (有浮點數字面常數,觸發浮點除法)
d = 14.0 / 4.0;  // 3.5
d = 14.0 / 4;    // 3.5

float f;
f = 14 / 4;           // 3
f = (float)(14.0 / 4.0); // 3.5 (預設 double 需轉型)

int i;
i = 14 / 4;      // 3
i = (int)(14.0 / 4.0); // 3
i = 14 % 4;      // 2 (餘數)

避坑指南

  1. 需浮點結果時,至少一個運算元為浮點數 (字面常數加 `.0` 或強制轉型)
  2. 財務/精密計算請用 `decimal`,避免二進位浮點誤差
  3. 除以零:整數拋 `DivideByZeroException`,浮點數產生 `Infinity`/`NaN`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved