Try   HackMD

C語言教學07 - 比較運算

撰寫於2018年9月

現代C語言小心得

真假邏輯

真假邏輯顧名思義有真值(true)以及假值(false)。在C語言中,只有零代表假(false),其他非零數都代表真(true)。但在正常運算中,以1代表真。

相等運算

相等運算有兩種,分別是等於運算子(==)以及不等於運算子(!=)

指派運算子(=)「不是」等於運算子(==)

在運算中,如果關係成立,得到真值(1);若不成立,得到假值(0)。
例如

#include <stdio.h> int main() { printf("%d, %d, %d\n", 3==2, 4!=6, (1+4)==(3+5)); return 0; }

執行結果

0, 1, 0

比較運算

比較運算有四種,分別是大於(>)、小於(<)、大於或等於(>=)、小於或等於(<=)。在運算中,若關係成立,得到真值(1);如果不成立,得到假值(0)。

#include <stdio.h> int main() { printf("%d, %d, %d\n", 4>5, 6<=7, 8 < 9); return 0; }

結果

0, 1, 1

常見誤解

假如還記得數學中有個遞移律的話,有些人可能會寫出

if (3>2>1) { ... }

這樣可是會出問題的!我們看看電腦怎麼判斷這個運算。首先因為比較運算是由左而右,所以會先計算「3>2」,得到,但是依照我們前面所敘述,其實就是1,所以整個程式就會變成

if (1>1) { ... }

很顯然這是錯誤的,所以一定要注意。

很多數學直覺在電腦上不適用

至於要怎麼解決呢?我們以後的邏輯運算可以處裡這類問題。