Rust操作符
操作符(Operator)通常是由一個或多個特殊的符號組成(也有非特殊符號的操作符,如as
),比如+ - * / % & *
等等,每個操作符都代表一種動作(或操作),這種動作作用於操作數之上。簡單來說,就是對操作數執行某種操作,然後返回操作後得到的結果。
比如加法操作3 + 2
,這裡的+
是操作符,加號兩邊的3和2是操作數,加法符號的作用是對操作數3加上操作數2,得到計算結果5,然後返回5。
此處僅列出一部分操作符並給出它們的含義,剩下其他的操作符將在後面章節涉及到的時候再介紹。
操作符類別 | 操作符及描述 | 示例 |
---|---|---|
一元運算符 | - :取負(加負號) | -x |
! :對整數值是位取反,對布爾值是邏輯取反 | !x | |
算術運算符 | + - * / % :加、減、乘、除、取模 | x + y |
位運算符 | `& | ^ ! << >>`:位與、位或、位異或、位取反、左移、右移 |
邏輯運算符 | `& && | |
賦值操作符 | = | x = y |
複合賦值操作符 | `+= -= *= /= %= &= | = ^= <<= >>=` |
等值比較運算符 | == != :相等和不等 | x == y |
大小比較運算符 | < <= > >= :小於、小於等於、大於、大於等於 | x > y |
以上操作符有幾點需要說明:
-
各種運算符有優先級,可使用小括號
()
來強制改變多個運算符運算時的優先級,如(x + y) * z
-
! & |
操作符有兩種意思,根據上下文決定:- 操作數是整數值時:按位取反、按位與、按位或
- 操作數是布爾值時:邏輯取反、邏輯與、邏輯或
-
& &&
都表示邏輯與,但後者會短路計算。同理| ||
都表示邏輯或,但後者會短路計算例如,
false & true
在知道左邊的操作數是false後,仍然會計算右邊的操作數,而false && true
知道左邊是false後,已經能夠確定整個表達式的結果是false,它會直接返回false,而不會再計算右邊的操作數。#![allow(unused)] fn main() { // 不會panic報錯退出,因為不會評估 || 運算符右邊的操作數 if true || panic!("not bang!!!") {} // 會panic報錯退出,因為會評估 | 運算符右邊的操作數 if true | panic!("bang!!!") {} }