2.6 算術運算式
¶基本算術運算子
C++ 的五個基本算術運算子,跟數學課的加、減、乘、除很像,只是除法要特別小心:
+(加)、-(減)、*(乘):和數學一樣。注意乘號是*,不是×。/(除):當左右兩邊都是整數時,做的是整數除法——只取「商」、把小數部分直接丟掉。所以7 / 3不是 2.33,而是2。%(取餘,也叫「模」):取整數除法之後的餘數。所以7 % 3是1。
/ 和 % 可以用「分東西」來想:把 7 顆糖果平分給 3 個人,每人拿 7 / 3 = 2 顆,最後剩下 7 % 3 = 1 顆。
| 運算子 | 名稱 | 例子 | 結果 |
|---|---|---|---|
+ |
加法 | 7 + 3 |
10 |
- |
減法 | 7 - 3 |
4 |
* |
乘法 | 7 * 3 |
21 |
/ |
除法(整數除法) | 7 / 3 |
2(小數丟掉,只取商) |
% |
取餘(模) | 7 % 3 |
1(餘數) |
#include <iostream>
using namespace std;
int main() {
int a = 17, b = 5;
cout << a << " + " << b << " = " << (a + b) << endl;
cout << a << " - " << b << " = " << (a - b) << endl;
cout << a << " * " << b << " = " << (a * b) << endl;
cout << a << " / " << b << " = " << (a / b) << endl; // 整數除法(只取商)
cout << a << " % " << b << " = " << (a % b) << endl; // 取餘(餘數)
return 0;
}
執行結果:
17 + 5 = 22
17 - 5 = 12
17 * 5 = 85
17 / 5 = 3
17 % 5 = 2
¶整數除法與取餘的細節
¶整數除法是「向零取整」
整數除法把小數丟掉之後,結果會落在哪個整數?規則是:朝數線上「0」的方向縮,停在離 0 比較近的那個整數——這就是「向零取整」名稱的由來。
7 / 2= 3.5,朝 0 縮 →3-7 / 2= -3.5,朝 0 縮 →-3(不是 -4;-3 比 -4 更靠近 0)
#include <iostream>
using namespace std;
int main() {
cout << "7 / 2 = " << 7 / 2 << endl; // 3.5 → 3
cout << "-7 / 2 = " << -7 / 2 << endl; // -3.5 → -3(朝 0,不是 -4)
cout << "7 / -2 = " << 7 / -2 << endl; // -3.5 → -3
cout << "-7 / -2 = " << -7 / -2 << endl; // 3.5 → 3
return 0;
}
執行結果:
7 / 2 = 3
-7 / 2 = -3
7 / -2 = -3
-7 / -2 = 3
¶取餘的規則
由上面那條等式推回去,在 C++ 裡 a % b 的結果符號會和被除數 a 相同:
#include <iostream>
using namespace std;
int main() {
cout << "7 % 3 = " << 7 % 3 << endl; // 1
cout << "-7 % 3 = " << -7 % 3 << endl; // -1
cout << "7 % -3 = " << 7 % -3 << endl; // 1
cout << "-7 % -3 = " << -7 % -3 << endl; // -1
return 0;
}
執行結果:
7 % 3 = 1
-7 % 3 = -1
7 % -3 = 1
-7 % -3 = -1
¶運算子優先級
和數學課一樣,乘、除、取餘(*、/、%)都比加、減先算——這三個是同一個優先級(取餘並不特別),+、- 也是同一級,同級的由左往右算。例如:
#include <iostream>
using namespace std;
int main() {
// 2 + 3 * 4 先算 3 * 4 = 12,再加 2 = 14
cout << "2 + 3 * 4 = " << 2 + 3 * 4 << endl;
// 用括號改變順序
cout << "(2 + 3) * 4 = " << (2 + 3) * 4 << endl;
return 0;
}
執行結果:
2 + 3 * 4 = 14
(2 + 3) * 4 = 20
要改變這個順序,就用小括號 ( ) 把想先算的部分括起來——括號裡的最先算。
¶換你動手
學完五個算術運算子,最好的鞏固方式就是實際解題。去把本節下方的相關練習題做一遍——用 +、-、*、/、% 解決時間換算、糖分計算這類實際問題,寫完提交看看吧!