不學 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 | 較大的值 |