不學 JAVA 換學 C# 之覺得心累 - L1:ch4 運算子與邏輯
AdSense
前言
程式是用來執行運算的工具,因此大部分程式語言的運算類別都大同小異:算術運算、比較運算、邏輯運算、賦值運算、條件 (三元) 運算,等等。
而操作符號就稱作運算子。
不同的運算子之間有優先順序。
算術運算子 (Arithmetic Operators)
基本的數學運算。
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
| + | 加法 | 3 + 2 | 5 |
| - | 減法 | 3 - 2 | 1 |
| * | 乘法 | 3 * 2 | 6 |
| / | 除法 | 6 - 2 | 3 |
| % | 取餘數 | 5 % 2 | 1 |
| ++ | 遞增 (加 1) | x++ 或 ++x | x+1 |
| -- | 遞減 (減 1) | x-- 或 --x | x-1 |
註:++x 運算速度會比 x++ 快。
比較運算子 (Comparison Operators)
比較兩個值,結果為布林值 true 或 false。
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
| == | 等於 | 5 == 5 | true |
| != | 不等於 | 5 != 5 | false |
| > | 大於 | 5 > 3 | true |
| < | 小於 | 5 < 3 | false |
| >= | 大於或等於 | 5 >= 3 | true |
邏輯運算子 (Conditional Logical Operators)
布林值的邏輯運算。不知道邏輯運算的人請參考真值表。
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
| && | 且 (AND) | true && false | false |
| || | 或 (OR) | true || false | true |
| ! | 非 (NOT) | !true | false |
邏輯運算當中會用到短路求值 (Short-circuit evaluation) 的策略,又稱最小化求值:只有當第一個運算數的值無法確定邏輯運算的結果時,才對第二個運算數進行求值。
例如:因為 && 要兩邊同時為 true,結果才會是 true。所以當 && 左邊的值為 false 時,可以馬上斷定,結果一定為 false,不用對 && 右邊進行計算求值。
例如:因為 || 只要一邊為 true,結果就會是 true。所以當 || 左邊的值為 true 時,可以馬上斷定,結果一定為 true,不用對 || 右邊進行計算求值。
補充
& 運算子
也可以用來當布林值的邏輯運算子,和 && 產生一樣的結果,差別是它不會用到短路求值,左右兩邊都一定會計算到。
& 運算子的類型:
- 布林值邏輯運算子
- 整數位元邏輯運算子
- 傳址運算子
1 | // 整數位元邏輯運算 |
| 運算子
也可以用來當布林值的邏輯運算子,和 || 產生一樣的結果,差別是它不會用到短路求值,左右兩邊都一定會計算到。
| 運算子的類型:
- 布林值邏輯運算子
- 整數位元邏輯運算子
1 | // 整數位元邏輯運算 |
參考資料:
位元與移位運算子 (C# 參考) - 邏輯 AND 運算子 &
指標相關運算子 - 傳址運算子 &
位元與移位運算子 (C# 參考) - 邏輯 OR 運算子 |
賦值運算子 (Assignment Operators)
將值賦予變數。
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
| = | 賦值 | x = 10 | x = 10 |
| += | 加法後賦值 | x += 5 | x = x + 5 |
| -= | 減法後賦值 | x -= 3 | x = x - 3 |
| *= | 乘法後賦值 | x *= 2 | x = x * 2 |
| /= | 除法後賦值 | x /= 2 | x = x / 2 |
條件 (三元) 運算子 (Ternary Conditional Operator)
? 前的結果為 true,返回 : 左邊的值,結果為 false,返回 : 右邊的值。
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
| ? : | 條件判斷和簡化 if-else | x > y ? x : y | 較大的值 |