BOO入門/運算子
外觀
< BOO入門
BOO入門 > 運算子 (上一章:容器與轉型 下一章:函數)
數值運算
[編輯]名稱 | 語法範例 | 註解 |
---|---|---|
乘 | a * b | |
除 | a / b | |
取餘數 | a % b | 通常也被稱為 mod 或 modulus |
加 | a + b | |
減 | a - b | |
次方 | a ** b | 不要跟位元運算的 Xor ^ 搞混了 |
位元右移 | a >> b | |
位元左移 | a << b | |
位元運算 And | a & b | |
位元運算 Or | a ǀ b | |
位元運算 Xor | a ^ b |
數值運算子也可以用在等號前面,語法是這樣的: a <operator>=b,使用時就像這樣:a+=b。 實際上就跟 a = a <operator> b 一樣,以剛剛的例子來說,a+=b 就與 a=a+b 是一樣的。
關係與邏輯
[編輯]名稱 | 語法範例 | 註解 |
---|---|---|
小於 | a < b | |
大於 | a > b | |
小於或等於 | a <= b | |
大於或等於 | a >= b | |
等於 | a == b | |
不等於 | a != b | |
邏輯上的而且(and) | a and b | 使用在 a 與 b 都是 boolean 值時 |
邏輯上的或(or) | a or b | 使用在 a 與 b 都是 boolean 值時 |
邏輯上的相反(Not) | not a | 使用在 a 是 boolean 值時 |
型別
[編輯]名稱 | 語法範例 | 註解 |
---|---|---|
型別轉換 | cast(string, a) | |
型別轉換 | a as string | |
是否相等或相容於指定型別 | a isa string | |
得到類別型別 | typeof(string) | |
得到變數型別 | a.GetType() |
Primary
[編輯]名稱 | 語法範例 | 註解 |
---|---|---|
存取成員 | A.B | 在第八章-類別將會提到 |
呼叫函數 | f(x) | 在第七章-函數將會提到 |
後置加 | i++ | 參見:前置加減與後置加減的差別 |
後置減 | i-- | 參見:前置加減與後置加減的差別 |
呼叫建構子 | o = MyClass() | 在第八章-類別將會提到 |
譯註:Primary 不知道該怎麼翻譯,保留不翻。
一元運算
[編輯]名稱 | 語法範例 | 註解 |
---|---|---|
負值 | -5 | |
前置加 | ++i | 參見下一節:前置加減與後置加減的差別 |
前置減 | --i | 參見下一節:前置加減與後置加減的差別 |
括號 | (a + b) |
譯註:Unary 也就是一元運算,你可以參考Unary
前置加減與後置加減的差別
[編輯]在程式裡面使用的時候,前置加減 (++i/--i) 會先施行 i=i+1 或 i=i-1 的動作,然後回傳 i 的新值,而後置加減 (i++/i--) 則是先回傳 i 的值,然後再進行 i=i+1 或 i=i-1 的動作。
// 前置加與後置加
num = 0
for i in range(5):
print num++
print '---'
num = 0
for i in range(5):
print ++num
輸出結果
0 1 2 3 4 --- 1 2 3 4 5
練習
[編輯]- 把你的手放在牆上,然後左腳往後約 3 呎,右腳往後約 2 呎。 (譯註:這應該是作者的玩笑吧~讓你伸展伸展身體~ :D )