算一算
讓變數裡的值變成新的值。 · ⏱ 約 25 分鐘
你會學到三件事
- 怎麼改掉一個變數裡的值
- 為什麼
score = score + 5 在數學上是錯的,在程式裡是對的
- 整數相除會把小數丟掉
開始之前
前三課的變數,值都是一開始就決定好、之後不再變。
這一課要讓它變。
一、換掉裡面的值
int main() {
int score = 95;
score = 100;
cout << "分數是 " << score << endl;
return 0;
}
score = 100; ——注意這一行前面沒有 int。
| 有 int | 「造一個新的位子叫 score」 |
| 沒 int | 「那個已經存在的 score,換成 100」 |
同一個名字只能造一次位子,但可以換無數次內容。
二、= 不是「等於」
現在把它改成:
int score = 95;
score = score + 5;
用數學的眼睛看,score = score + 5 是在說「一個數等於它自己加五」——
那不可能成立。
而在程式裡,= 不是「等於」,是「放進去」。這一行要從右邊往左邊讀:
score + 5 ① 先算右邊 → 95 + 5 = 100
score = ───────── ② 再把算出來的 100 放進 score
⚠️ 順序是先右後左。 只要記住這一件事,這種寫法就不再奇怪了:
count = count + 1; // 計數器加一
total = total + n; // 累加
它們之後會一直出現。
三、五種運算,和一個陷阱
int a = 7, b = 2;
cout << a + b << endl; // 9
cout << a - b << endl; // 5
cout << a * b << endl; // 14
cout << a / b << endl; // 3 ← ⚠️ 不是 3.5
cout << a % b << endl; // 1 ← 餘數
7 / 2 印出 3,不是 3.5。
因為 a 和 b 都是 int,C++ 認為「整數除以整數,結果也是整數」,
於是把小數點後面直接丟掉(不是四捨五入——7/2 是 3,9/2 也是 4)。
想要 3.5,其中一邊要是小數:
double c = 7.0 / 2; // 3.5
% 是取餘數,只有整數能用。它比你現在想的有用得多——
判斷奇偶(n % 2)、取個位數(n % 10)都靠它。
完成的樣子
int main() {
int score = 95;
score = score + 5;
cout << "分數是 " << score << endl;
return 0;
}
換你了
接上一課的輸入:讀進一個數字,印出它的兩倍和除以 3 的餘數。
輸入:14
兩倍是 28
餘數是 2
這一課你做了什麼
- 你用不帶型態的
score = ... 換掉了變數的值
- 你知道
= 要從右邊讀到左邊,不是數學的等號
- 你知道
7 / 2 是 3,而 % 拿得到那個被丟掉的餘數
如果卡住了
| 你看到 |
多半是因為 |
說 score 重複宣告 |
第二行也寫了 int。換值不用再寫型態 |
| 除法結果少了小數 |
兩邊都是整數。讓其中一邊變成 7.0 |
% 那行報錯 |
對 double 用了 %。取餘數只有整數能用 |
| 印出的還是舊的值 |
那一行寫在 cout 的後面了。程式是由上往下跑的 |
在編輯器打開這一課 →