# C語言教學08 - 邏輯運算 ## 撰寫於2018年9月 [現代C語言小心得](https://hackmd.io/s/HJPpJjvw7) ## 邏輯運算 邏輯運算很簡單,有三個運算 ### 邏輯NOT運算 Logical Negation operator 這個運算子很簡單,就是(!)驚嘆號。這代表著邏輯反運算,!1=0、!0=1。例如: ```C= #include <stdio.h> int main() { printf("%d, %d, %d\n", !(53==8), !0, !1); return 0; } ``` 結果 ``` 1, 1, 0 ``` ### 邏輯AND運算 Logical AND operator 邏輯與運算子(&&)很簡單,就是兩個都是True,運算後才是True。假如左邊的運算元(operand)是False,直接返回False。 真值表如下: | 左邊 | 右邊 | 左邊 && 右邊 | |:----:|:----:|:------------:| | 0 | 0 | 0 | | 0 | 1 | 0 | |1|0|0| |1|1|1| :::warning 不要寫成一個&,這有其他意義 ::: ```C= #include <stdio.h> int main() { printf("%d, %d, %d\n", 1 && 0, (3==8) && (4==4), 1 && 1); return 0; } ``` 結果 ``` 0, 0, 1 ``` ### 邏輯OR運算 Logical OR operator 邏輯或運算子(||兩個長條),代表只要其中一個是True,就回傳True。所以,只要左邊運算元是True,就不會檢查右邊了。 真值表如下: | 左邊 | 右邊 | 左邊 \|\| 右邊 | |:----:|:----:|:------------:| | 0 | 0 | 0 | | 0 | 1 | 1 | |1|0|1| |1|1|1| :::warning 不要寫成一個|,這有其他意義 ::: ```C= #include <stdio.h> int main() { printf("%d, %d, %d\n", 1 || 0, (3==8) || (3==4), 1 || 1); return 0; } ``` 結果 ``` 1, 0, 1 ```