Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

複合賦值運算子

本集目標

學會用 +=-= 等簡寫方式來更新變數的值。

正文

上一集學了 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 += 5x = x + 5
x -= 5x = x - 5
x *= 5x = x * 5
x /= 5x = x / 5
x %= 5x = x % 5

小提醒

要用這些運算子,變數一定要是 let mut 宣告的,因為你正在改變它的值。

重點整理

  • 複合賦值運算子:+=-=*=/=%=
  • x += 5 就是 x = x + 5 的簡寫——先算右邊,再存回左邊
  • 使用前提:變數必須用 let mut 宣告