Appearance
运算符
本章介绍 Rust 中常用的算术、比较、逻辑与位运算符,以及赋值、复合赋值等写法。与类型、字面量相关的规则(如整数除法)在数据类型中说明。
算术运算符
| 运算符 | 含义 |
|---|---|
+ | 加法(对整数、浮点、char 等重载) |
- | 减法 |
* | 乘法 |
/ | 除法(整数向零截断,浮点为通常浮点除法) |
% | 取模(余数符号与除数一致) |
rust
fn main() {
let a = 10;
let b = 3;
println!("a + b = {}", a + b);
println!("a - b = {}", a - b);
println!("a * b = {}", a * b);
println!("a / b = {}", a / b);
println!("a % b = {}", a % b);
}比较运算符
结果为 bool:
| 运算符 | 含义 |
|---|---|
== / != | 相等 / 不等 |
< / > | 小于 / 大于 |
<= / >= | 小于等于 / 大于等于 |
rust
fn main() {
let a = 5;
let b = 10;
println!("a == b: {}", a == b);
println!("a < b: {}", a < b);
}逻辑运算符
操作数为 bool,结果为 bool:
| 运算符 | 含义 |
|---|---|
&& | 逻辑与(短路) |
|| | 逻辑或(短路) |
! | 逻辑非 |
rust
fn main() {
let a = true;
let b = false;
println!("a && b: {}", a && b);
println!("a || b: {}", a || b);
println!("!a: {}", !a);
}短路含义:例如 false && expensive() 不会调用 expensive()。
位运算符
对整数类型按位操作。注意 ! 在整数上表示按位取反,在 bool 上表示逻辑非,由类型决定含义:
| 运算符 | 含义 |
|---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
! | 按位取反(整数) |
<< / >> | 左移 / 右移 |
rust
fn main() {
let a: u8 = 0b1010;
let b: u8 = 0b1100;
println!("a & b: {:b}", a & b);
println!("a | b: {:b}", a | b);
println!("a ^ b: {:b}", a ^ b);
}有符号整数右移为算术右移(符号位扩展);无符号为逻辑右移。
赋值与复合赋值
=赋值。+=、-=、*=、/=、%=以及&=、|=、^=、<<=、>>=等复合赋值,等价于先运算再赋给左操作数(左操作数只求值一次)。
rust
fn main() {
let mut n = 10;
n += 5;
n -= 2;
println!("{}", n);
}其他常用运算符(速览)
下列运算符在后续章节会反复出现,此处仅列名便于查阅:
小结
- 算术:
+、-、*、/、%;整数除法截断。 - 比较:得到
bool。 - 逻辑:
&&、||、!(布尔);位运算另一套符号,整数上的!为按位取反。 =与复合赋值用于修改变量绑定的值(需mut)。