組合技
把「拿出來、算一下、放回去」縮成一個符號。 · ⏱ 約 15 分鐘
你會學到三件事
+= -= 就是第 6 課那個形狀的縮寫
n++ 是「加一」,而它有兩種寫法
- 這些縮寫是方便,不是新東西
開始之前
第 6 課那一行:
score = score + 5;
它出現得太頻繁了——計數、累加、扣血、加分,全都是這個形狀。
所以 C++ 給了它一個縮寫。
🟢 先把編輯器打開,跟著下面一起做:跟著做
一、+=
這是同一件事的簡寫——打上這三行比較看看:
1int n = 10;2n += 5; // 完全等於 n = n + 5;3cout << n << endl; // 15
念作「n 加等於 5」,做的事是「n 變成 n 加 5」。
五個都有:
🔎 這一段是試一下——打了看結果就好,不要留在程式裡。
1n += 5;2n -= 3;3n *= 2;4n /= 4;5n %= 3;
它們沒有做任何新的事——都是「先算右邊、再放回左邊」的縮寫。
所以第 6 課那條規則還是唯一要記的規則。
二、++
加一實在太常用了,所以它又有一個更短的縮寫:
1n++; // 完全等於 n += 1; 也等於 n = n + 1;2n--; // 減一
你在第 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 裡是一個讀起來很累的習慣,
而它省下的字數不值得。
完成的樣子
這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。
1#include <iostream>2using namespace std;3int main() {4 int n = 10;5 n += 5;6 n -= 3;7 n++;8 cout << n << endl;9 return 0;10}
把積木打散,自己排回去:排回去:把剛才那支程式的積木排好
換你了
不用 +=、不用 ++,把上面那段改寫成第 6 課的長寫法,
確認它印出來一模一樣。
確認完再把它改回來——你要相信的是「這兩種寫法真的相同」,
不是「課本說它們相同」。
到編輯器做這一題:練習:改寫成長寫法,印出一模一樣的 13
做一個
起薪 22000,連續加薪三次,每次加現在薪水的十分之一。印出最後的薪水。
🔴 三次都要用 += 寫。⚠️ 而它是整數除法——每一次的十分之一都會把小數丟掉,
所以答案不是 22000 × 1.1³。
到編輯器做這一題:做一個:三次加薪
這一課你做了什麼
- 你用
+= -= 取代了 x = x + ... 的長寫法
- 你用
n++ 做了加一
- 你知道這些全部都是縮寫,沒有一個是新概念
如果卡住了
| 你看到 |
多半是因為 |
n =+ 5 沒有報錯,結果卻很怪 |
順序寫反了。那被讀成 n = (+5) |
a++ 印出來少一 |
那是 a++ 的行為(先給值後加)。單獨寫一行就沒這問題 |
++ 對 string 報錯 |
加一只有數字能用 |
在編輯器打開這一課 →