2.7 指派運算子
¶基本指派 =
= 用來把右邊的值指派給左邊的變數:
#include <iostream>
using namespace std;
int main() {
int x;
x = 10; // x 現在是 10
x = 20; // x 改成 20
x = x + 5; // x 現在是 25
cout << x << endl;
return 0;
}
執行結果:
25
¶連續指派:a = b = 3
= 可以接連寫好幾個,例如 a = b = 3;。它是從最右邊往左做:先把 3 指派給 b,再把 b(現在是 3)指派給 a,最後 a、b 都變成 3。
#include <iostream>
using namespace std;
int main() {
int a, b;
a = b = 3; // 先 b = 3,再 a = b
cout << a << " " << b << endl;
return 0;
}
執行結果:
3 3
常用在「一次把好幾個變數設成同一個初始值」。
¶複合指派運算子
為了簡化 x = x + 5 這類運算,C++ 提供了複合指派運算子:
| 運算子 | 等價於 | 例子(右邊帶運算式才看得出括號的作用) |
|---|---|---|
+= |
x = x + (...) |
x += 2 + 3 → x = x + (2 + 3) |
-= |
x = x - (...) |
x -= 2 + 3 → x = x - (2 + 3),不是 x - 2 + 3 |
*= |
x = x * (...) |
x *= 2 + 3 → x = x * (2 + 3),不是 x * 2 + 3 |
/= |
x = x / (...) |
x /= 2 + 3 → x = x / (2 + 3) |
%= |
x = x % (...) |
x %= 2 + 3 → x = x % (2 + 3) |
#include <iostream>
using namespace std;
int main() {
int score = 80;
score += 10; // score = score + 10 = 90
cout << "After +10: " << score << endl;
score -= 5; // score = score - 5 = 85
cout << "After -5: " << score << endl;
score *= 2; // score = score * 2 = 170
cout << "After *2: " << score << endl;
score /= 10; // score = score / 10 = 17
cout << "After /10: " << score << endl;
return 0;
}
執行結果:
After +10: 90
After -5: 85
After *2: 170
After /10: 17
¶動手試試看
用複合指派改寫以下程式,讓程式碼更簡潔:
#include <iostream>
using namespace std;
int main() {
int num = 100;
num = num + 25;
num = num * 2;
num = num - 50;
num = num / 5;
cout << "Final result: " << num << endl;
return 0;
}