Semorphe

組合技

把「拿出來、算一下、放回去」縮成一個符號。 · ⏱ 約 15 分鐘

你會學到三件事

  1. += -= 就是第 5 課那個形狀的縮寫
  2. n++ 是「加一」,而它有兩種寫法
  3. 這些縮寫是方便,不是新東西

開始之前

第 5 課那一行:

score = score + 5;

它出現得太頻繁了——計數、累加、扣血、加分,全都是這個形狀。 所以 C++ 給了它一個縮寫。

一、+=

int n = 10;
n += 5;        // 完全等於 n = n + 5;
cout << n << endl;    // 15

念作「n 加等於 5」,做的事是「n 變成 n 加 5」。

五個都有:

n += 5;    n -= 3;    n *= 2;    n /= 4;    n %= 3;

它們沒有做任何新的事——都是「先算右邊、再放回左邊」的縮寫。 所以第 5 課那條規則還是唯一要記的規則。

二、++

加一實在太常用了,所以它又有一個更短的縮寫:

n++;      // 完全等於 n += 1;  也等於 n = n + 1;
n--;      // 減一

你在第 11 課的 for 迴圈裡會一直看到它。

⚠️ n++++n

兩種都是加一,差別在**「這個式子本身」算出什麼**:

int a = 5;
cout << a++ << endl;   // 印 5,然後 a 變成 6   ← 先給值,後加
int b = 5;
cout << ++b << endl;   // b 先變成 6,然後印 6   ← 先加,後給值

單獨寫一行的時候兩者完全一樣n++;++n; 沒差別)。 差別只在你把它塞進別的式子裡的時候。

建議:初學階段一律單獨寫一行。++ 塞進 coutif 裡是一個讀起來很累的習慣, 而它省下的字數不值得。

完成的樣子

int main() {
    int n = 10;
    n += 5;
    n -= 3;
    n++;
    cout << n << endl;
    return 0;
}

換你了

不用 +=、不用 ++,把上面那段改寫成第 5 課的長寫法, 確認它印出來一模一樣。

確認完再把它改回來——你要相信的是「這兩種寫法真的相同」, 不是「課本說它們相同」。

這一課你做了什麼

如果卡住了

你看到 多半是因為
n =+ 5 沒有報錯,結果卻很怪 順序寫反了。那被讀成 n = (+5)
a++ 印出來少一 那是 a++ 的行為(先給值後加)。單獨寫一行就沒這問題
++string 報錯 加一只有數字能用
在編輯器打開這一課 →