組合技
把「拿出來、算一下、放回去」縮成一個符號。 · ⏱ 約 15 分鐘
你會學到三件事
+= -= 就是第 5 課那個形狀的縮寫
n++ 是「加一」,而它有兩種寫法
- 這些縮寫是方便,不是新東西
開始之前
第 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; 沒差別)。
差別只在你把它塞進別的式子裡的時候。
建議:初學階段一律單獨寫一行。
把 ++ 塞進 cout 或 if 裡是一個讀起來很累的習慣,
而它省下的字數不值得。
完成的樣子
int main() {
int n = 10;
n += 5;
n -= 3;
n++;
cout << n << endl;
return 0;
}
換你了
不用 +=、不用 ++,把上面那段改寫成第 5 課的長寫法,
確認它印出來一模一樣。
確認完再把它改回來——你要相信的是「這兩種寫法真的相同」,
不是「課本說它們相同」。
這一課你做了什麼
- 你用
+= -= 取代了 x = x + ... 的長寫法
- 你用
n++ 做了加一
- 你知道這些全部都是縮寫,沒有一個是新概念
如果卡住了
| 你看到 |
多半是因為 |
n =+ 5 沒有報錯,結果卻很怪 |
順序寫反了。那被讀成 n = (+5) |
a++ 印出來少一 |
那是 a++ 的行為(先給值後加)。單獨寫一行就沒這問題 |
++ 對 string 報錯 |
加一只有數字能用 |
在編輯器打開這一課 →