在 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.