在 Rust 中只能对相同类型的操作数做算数运算。

基本运算:

let a = 11;
let b = 33;
let c = a + b;
println!("c is {}", c); // c is 44
let d = c - b;
println!("d is {}", d); // d is 11
let e = a * d;
println!("e is {}", e); // e is 121

使用 as 进行类型转换,需要注意精度损失和兼容性问题。

let f = c as f32 / 4.5;
println!("f is {}", f); // f is 9.777778

优先级控制

let g = 43.5432 % (a as f64 * e as f64);
println!("g is {}", g); // g is 43.5432

同样的做比较运算只能对相同类型的进行比较

let a = 11;
let b = 88;
println!("a EQUAL TO b is {}", a == b); // a EQUAL TO b is false

println!("a NOT EQUAL TO b is {}", a != b); // a NOT EQUAL TO b is true

println!("a GREATER THAN b is {}", a > b); // a GREATER THAN b is false

println!("a GREATER THAN OR EQUAL TO b is {}", a >= b); // a GREATER THAN OR EQUAL TO b is false

println!("a LESS THAN b is {}", a < b); // a LESS THAN b is true

println!("a LESS THAN OR EQUAL TO b is {}", a <= b); // a LESS THAN OR EQUAL TO b is true
let c = true;
let d = false;

println!("c GREATER THAN d is {}", c > d); // c GREATER THAN d is true
println!("c GREATER THAN OR EQUAL TO d is {}", c >= d); // c GREATER THAN OR EQUAL TO d is true

示例:计算平均值

fn main() {
    let a = 33;
    let b = 4.9;
    let c: f32 = 123.5;
    let average = (a as f32 + b as f32 + c) / 3.0;
    println!("average is {}", average);
    assert_eq!(average, 53.8);
    println!("test passed.");
}

输出:

average is 53.8
test passed.