複合賦值運算子
本集目標
學會用 +=、-= 等簡寫方式來更新變數的值。
正文
上一集學了 let mut 讓變數可以改值。今天來學一個偷懶的寫法。
x = x + 5 是什麼意思?
先來看一個很重要的觀念。假設你有一個變數 x 是 10,你想讓它加 5:
fn main() {
let mut x = 10;
x = x + 5;
println!("{}", x); // 15
}
這裡 x 同時出現在 = 的左邊和右邊。這不是數學上的「x 等於 x + 5」(那在數學上根本不成立對吧?),而是程式語言的意思:先算右邊的 x + 5(也就是 10 + 5 = 15),然後把結果存回左邊的 x。所以 x 的值就從 10 變成了 15。
+= 簡寫
上面那行其實有個更簡短的寫法:
fn main() {
let mut x = 10;
x += 5;
println!("{}", x); // 15
}
x += 5 的意思就是 x = x + 5,只是比較簡潔。
其他複合賦值運算子
減法、乘法、除法、取餘數都有對應的簡寫:
fn main() {
let mut a = 20;
a -= 3;
println!("20 - 3 = {}", a); // 17
a *= 2;
println!("17 * 2 = {}", a); // 34
a /= 4;
println!("34 / 4 = {}", a); // 8(整數除法)
a %= 3;
println!("8 % 3 = {}", a); // 2
}
一覽表
| 簡寫 | 等同於 |
|---|---|
x += 5 | x = x + 5 |
x -= 5 | x = x - 5 |
x *= 5 | x = x * 5 |
x /= 5 | x = x / 5 |
x %= 5 | x = x % 5 |
小提醒
要用這些運算子,變數一定要是 let mut 宣告的,因為你正在改變它的值。
重點整理
- 複合賦值運算子:
+=、-=、*=、/=、%= x += 5就是x = x + 5的簡寫——先算右邊,再存回左邊- 使用前提:變數必須用
let mut宣告