<style> .mkd { background-color: rgba(0, 150, 250, .2); } </style> # 運算子 ## intro 運算子和基本內建型別一樣,都是<span class="mkd">不需要任何標頭檔和命名空間</span>就可以使用的指令 ## 設定運算子/指定運算子 |運算子|功能|例子| |-|-|-| |=|將a指定為b|a = b| ## 單元運算子 |運算子|功能|例子| |-|-|-| |+|正|+a| |-|負|-a| |++|遞增|\++a,a++| |-\-|遞減|-\-a,a-\-| |!|否(0變1,1變0)|!a| |~|取1的補數|~a| ## 算數運算子 |運算子|功能|例子| |-|-|-| |+|加|a + b| |-|減|a - b| |*|乘|a * b| |/|除|a / b| |%|取餘數|a % b| ## 關係運算子 符合條件電腦就會回傳<span class="mkd">true</span>(1),不符合就會回傳<span class="mkd">false</span>(0) |運算子|功能|例子| |-|-|-| |>|大於|a > b| |<|小於|a < b| |>=|大於等於|a >= b| |<=|小於等於|a <= b| |==|等於|a == b| |!=|不等於|a != b| ## 邏輯運算子 |運算子|功能|例子| |-|-|-| |&&/and|AND|a && b| | \|\| / or|OR|a \|\| b| |^|XOR|a ^ b| |AND|true/1|false/0| |------ |-|-| |true/1 |true/1|false/0| |false/0|false/0|false/0| |OR|true/1|false/0| |------ |-|-| |true/1 |true/1|true/1| |false/0|true/1|false/0| |XOR|true/1|false/0| |------ |-|-| |true/1 |false/0|true/1| |false/0|true/1|false/0| ## 位元運算子 進階班範圍,我還沒編,想學去問郭勝威 [位元運算](/BNkTGmiqRjC1WXPa8j-yTg) ## 運算子優先順序 運算子有不同的優先順序 如果沒有處理好可能會導致編譯成功 但效果和預期的不一樣 如果不確定優先順序的話就好好利用<span class="mkd">括號</span> 括號優先順序就和四則運算一樣 內部優先 > C++ 內建運算子、優先順序和關聯性 > https://docs.microsoft.com/zh-tw/cpp/cpp/cpp-built-in-operators-precedence-and-associativity?view=msvc-170 ### 小測驗 :::warning 1 and 0 理論上是0 但什麼第一行的cout會輸出1呢 ```cpp= #include<iostream> using namespace std; int main(){ cout << 1 && 0; //輸出1 } ``` :::spoiler 解答 因為<<運算子的優先順序比&&高 如果想輸出0的話要加括號 ```cpp= #include<iostream> using namespace std; int main(){ cout << (1 && 0); //輸出1 } ``` :::