還記得國中數學學過的那些數學符號嗎?加、減、乘、除...沒錯,就是它們!在程式語言世界裡,這些符號我們叫做 — 運算子。
今天要討論的就是這些運算子。看到熟悉的東西是不是倍感親切?其實程式設計並不像大家想像的那麼遙不可及,它就像是給電腦下達一連串的數學指令,而運算子就是其中之一。
本文將介紹賦值運算子、算術運算子、比較運算子以及邏輯運算子,由於每個語言的用法稍稍不同,故以下會用 Python 作為範例。
賦值運算子用於將值賦給變量。除了基本的賦值運算子 (=),還有一些複合賦值運算子,它們結合了算術運算和賦值操作。
x = 5
x += 3
等同於 x = x + 3
x -= 2
等同於 x = x - 2
x *= 4
等同於 x = x * 4
x /= 2
等同於 x = x / 2
x %= 3
等同於 x = x % 3
x **= 2
等同於 x = x ** 2
範例:
x = 10
print(x) # 輸出: 10
x += 5
print(x) # 輸出: 15
x *= 2
print(x) # 輸出: 30
x /= 3
print(x) # 輸出: 10.0
這些複合賦值運算子不僅使代碼更簡潔,還能提高程式的執行效率,因為它們通常被編譯成單一的機器指令。
算術運算子用於執行基本的數學運算。
5 + 3 = 8
10 - 4 = 6
3 * 4 = 12
20 / 5 = 4
17 % 5 = 2
(17除以5的餘數)2 ** 3 = 8
(2的3次方)範例:
x = 10
y = 3
print(x + y) # 輸出: 13
print(x * y) # 輸出: 30
比較運算子用於比較兩個值,返回布林值(True或False)。
5 == 5
返回 True5 != 3
返回 True7 > 3
返回 True2 < 8
返回 True5 >= 5
返回 True4 <= 4
返回 True範例:
a = 10
b = 5
print(a > b) # 輸出: True
print(a == b) # 輸出: False
邏輯運算子用於組合多個條件,我們引用經典的文氏圖來比喻吧。
範例:
x = 5
y = 10
print(x < 10 and y > 5) # 輸出: True
print(x > 10 or y > 5) # 輸出: True
print(not x == y) # 輸出: True
在實務上整理 Excel 資料時你可能經歷過,儲存格上顯示為 1 時,你無法馬上得知他是作為數值還是字串來儲存,必須得右鍵檢查他的儲存格格式是數值還是文字。
作為後端工程師,對於資料型別的敏銳度要求是很重要的,我們會盡可能避免不同型別的比較或運算,而「不同資料型別間的比較」這件事在不同程式語言中的判定其實是有區別的,因此我認為你可以先有個概念:
console.log(1 == "1"); // 輸出: true
console.log(1 === "1"); // 輸出: false
在 JavaScript 中,使用 ==
在比較前會先進行類型轉換,而使用 ===
則不進行類型轉換。
print(1 == "1") # 輸出: False
print(1 == int("1")) # 輸出: True
Python 在比較前也不會進行類型轉換,但他不會報錯,只會認定是不同型別而返回 False,需要額外轉換型別才能比較不同型別。
fmt.Println(1 == 1) // 輸出: true
// fmt.Println(1 == "1") // 編譯錯誤
i, _ := strconv.Atoi("1")
fmt.Println(1 == i) // 輸出: true
Go 作為靜態語言,他會嚴格要求類型匹配,否則會報錯,故需要額外轉換型別在進行比較。
這些算是程式語言中的基礎,接下來幾天讓我們繼續深入探索下去~