Skip to content

Rust 运算符

在 Rust 中,无论是简单的数值计算、逻辑判断,还是更复杂的模式匹配和位操作,运算符都承担着核心的角色。

Rust 既支持我们熟悉的 C 系语言常见运算符,也提供了一些独特的操作符号。熟练掌握这些运算符,不仅能让代码更简洁高效,也能帮助你更好地理解 Rust 的语义。

1.算术运算符

运算符说明示例结果
+加法5 + 27
-减法5 - 23
*乘法5 * 210
/除法(整除)5 / 22 (整数)
%取余5 % 21
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);
}

输出:

a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1

Rust 没有 **^ 这样的乘方运算符(注意:^ 是按位异或),如果要做乘方,需要使用内置的 pow 或 powf 方法:

  • 整数类型使用 .pow(exp: u32)
  • 浮点类型使用 .powf(exp: f64)

整数乘方

rust
fn main() {
  let base: i32 = 2;
  let result = base.pow(3); *// 2^3*

  println!("2^3 = {}", result);
}

输出:

2^3 = 8

浮点数乘方

rust
fn main() {
  let base: f64 = 2.0;
  let result = base.powf(2.5); *// 2^2.5*

  println!("2^2.5 = {}", result);
}

输出:

2^2.5 = 5.656854249492381

2.关系(比较)运算符

运算符说明示例结果
==相等5 == 5true
!=不相等5 != 2true
>大于5 > 2true
<小于5 < 2false
>=大于等于5 >= 5true
<=小于等于2 <= 5true
rust
fn main() {
  let x = 5;
  let y = 10;

  println!("x == y : {}", x == y);
  println!("x != y : {}", x != y);
  println!("x > y  : {}", x > y);
  println!("x < y  : {}", x < y);
  println!("x >= y : {}", x >= y);
  println!("x <= y : {}", x <= y);
}

输出:

x == y : false
x != y : true
x > y  : false
x < y  : true
x >= y : false
x <= y : true

3.逻辑运算符

运算符说明示例结果
&&逻辑与(AND)true && falsefalse
``逻辑或(OR)
!逻辑非(NOT)!truefalse
rust
fn main() {
  let a = true;
  let b = false;

  println!("a && b = {}", a && b);
  println!("a || b = {}", a || b);
  println!("!a = {}", !a);
}

输出:

a && b = false
a || b = true
!a = false

4.位运算符

运算符说明示例结果
&按位与5 & 31
``按位或`5
^按位异或5 ^ 36
!按位取反!5-6
<<左移5 << 110
>>右移5 >> 12
rust
fn main() {
  let x: u8 = 0b1010; *// 10*
  let y: u8 = 0b1100; *// 12*

  println!("x & y = {:b}", x & y);
  println!("x | y = {:b}", x | y);
  println!("x ^ y = {:b}", x ^ y);
  println!("!x = {:b}", !x);
  println!("x << 1 = {:b}", x << 1);
  println!("x >> 1 = {:b}", x >> 1);
}

输出:

x & y = 1000
x | y = 1110
x ^ y = 110
!x = 11110101
x << 1 = 10100
x >> 1 = 101

5.赋值与复合赋值运算符

运算符说明示例结果
=赋值let mut x = 5; x = 3;x = 3
+=加并赋值x += 2x = x + 2
-=减并赋值x -= 2x = x - 2
*=乘并赋值x *= 2x = x * 2
/=除并赋值x /= 2x = x / 2
%=取余并赋值x %= 2x = x % 2
`&== ^= <<= >>=`位运算复合赋值x &= 2
rust
fn main() {
  let mut n = 5;

  n += 3;
  println!("n += 3 -> {}", n);

  n *= 2;
  println!("n *= 2 -> {}", n);

  n >>= 1;
  println!("n >>= 1 -> {}", n);
}

输出:

n += 3 -> 8
n *= 2 -> 16
n >>= 1 -> 8

6.其他常见运算符

运算符说明示例
..范围(不含右端)0..5 产生 0 到 4
..=范围(含右端)0..=5 产生 0 到 5
as类型转换5 as f32
?错误传播(在 Result 中)some()?;
*解引用*ptr
&取引用&x
ref绑定为引用let ref y = x;
rust
fn main() {
  let x = 5;
  let y = x as f64;

  for i in 1..4 {
    print!("{} ", i);
  }
  println!();

  for i in 1..=3 {
    print!("{} ", i);
  }
  println!();

  let a = 10;
  let b = &a;
  println!("*b = {}", *b);
}

输出:

1 2 3 
1 2 3 
*b = 10

MIT Licensed