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