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!!!") {}
    }