tags: FoShiShi

運算子

What

運算子是一種記號或符號,用於指定運算式內執行的計算類型
例:+(加), -(減), *(乘), /(除)

其實就跟數學的運算子一樣
只是在C++的世界中
有更多的運算方式跟更多可以用來計算的變數

當然你也可重新定義運算子的計算方式,但這這就是函式的範圍了
這裡先不多講

When

當要對多個數字或資料型態做運算的時候

How

運算子pt.0(設定運算子)

就是=
用來把後者的值指定到前者
例:int a = 1

= 不是判斷是否等於的意思
==才是

不要把===搞混
這debug起來很麻煩


運算子pt.1(算數運算子)

一般運算子就是一般的運算子
跟數學一樣的那種

運算子 名稱 計算方式 例子
+ 加(add) 取兩值相加之值 int x = a + b
- 減(subtract) 取兩值相減之值 int x = a - b
* 乘以(multiply) 取兩值相乘之值 int x = a * b
/ 除以(divide) 前值除以後值之值 int x = a / b
% 取模(modulo) 取前值除以後值之餘數之值 int x = a % b

可能有人對這邊的取模比較陌生
其實就是取餘數
但當被除數為負數時,得出的餘數將會是負數(不整除的情況下)

例:

cout << 5 % 2 << endl; // 輸出 1 cout << -5 % 2 << endl; // 輸出 -1 cout << 5 % -2 << endl; // 輸出 1 cout << -5 % -2 << endl; // 輸出 -1
運算子 名稱 計算方式 例子
+= 加等於 將一值加上另一值 a += b
-= 減等於 將一值減上另一值 a -= b
*= 乘等於 將一值乘上另一值 a *= b
/= 除等於 將一值除上另一值 a /= b
%= 模等於 將一值取另一值之模 a %= b

a += b就是a = a + b
其他的以此類推

運算子 名稱 計算方式 例子
++ 加加 將一值加1 a ++
-- 減減 將一值減1 a --

a ++ 就是a += 1就是a = a + 1
其他的以此類推

沒有**//%%這種鬼東西
這裡不是python

這裡的+, -也可以當作正跟負
像是
int a = 1;
int b = -a
b 就會是 -1


運算子pt.2(關係運算子)

關係運算子就是對兩個東西取關係
判斷成邏輯條件
邏輯條件就是對某些狀況進行的判斷(truefalse)

關係運算子邏輯運算子都會配 判斷(這裡其實有超連結只是字是藍的所以不明顯)來實作

運算子 名稱 計算方式 例子
== 等於 兩值是否相等 a == b
!= 不等於 兩值是否不相等 a != b
< 小於 前值是否小於後值 a < b
> 大於 前值是否大於後值 a > b
<= 小於等於 前值是否小於等於後值 a <= b
>= 大於等於 前值是否大於等於後值 a >= b

不要把===搞混
用錯的話debug起來就真的很麻煩
(因為很重要所以再講一次)


運算子pt.3(邏輯運算子)

邏輯運算子是用來做出邏輯條件的運算

&&(and)

當我們做出a && b
必須要a跟b都為true才會回傳true
其他都回傳false

a(
)\b(
)
false true
false false false
true false true

||(or)

當我們做出a || b
a或b為true就會回傳true
其他都回傳false

a(
)\b(
)
false true
false false true
true true true

!(not)

當我們做出!a
a為true就回傳false
a為false就回傳true

(顯然這簡單到不用表格)

將邏輯運算子配合關係運算子可以形成各種神奇東西
但是如果要判斷a < b < c這樣的東西不能直接這樣寫
要用&&去連接
像是
a < b && b < c


運算子pt.4(位元運算子)

這裡就不講了
因為初學根本用不到
有興趣自己去查


()

當你接了一大堆運算子的時候
你會發現版面很亂
或有些運算的順序有問題
所以可以在某些地方加上 ()
就跟一般數學式的()一樣
會先執行裡面的運算

例:

int a = 1, b = 2, c = 3; int d = (a + b) * ((c - a) / 2);

C++中依然符合先乘除後加減的規則
至於其他的運算子的先後順序
有興趣的的可以去查 "C++運算子優先順序"


實際應用

題目1

輸入兩數a, b
請輸出a + b

solution

+

#include<iostream> using namespace std; int main() { int a, b; cin >> a >> b; cout << a + b << endl; }

題目2

輸入三個數a, b, c
先把a加上5
再把b乘上a
最後輸出bc的模

solution

反正就是上面的運算子
我懶得打

#include<iostream> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; a += 5; b *= a; cout << b % c << endl; }