Skip to content

Latest commit

 

History

History
134 lines (94 loc) · 3.4 KB

File metadata and controls

134 lines (94 loc) · 3.4 KB

比較運算子

提醒: 此篇文是 "資料型態" 中的布林值類別延伸內容

閱讀過後或了解了再來閱讀此篇內容

一、常見比較運算子

運算子 名稱
== 等於
!= 不等於
> 大於
< 小於
>= 大於等於
<= 小於等於

比較運算子的結果皆為布林值

註: 1 對應到 true 而 0 對應到 false

Serial.println(1 == 1); //印出 1
Serial.println(1 == 2); //印出 0

Serial.println(1 != 2); //印出 1

等於 與 不等於 也可用於數字類型以外的物件

Serial.println('A' == 'A'); //印出 1

Serial.println('A' != 'C'); //印出 1

Serial.println(true == true); //印出 1

Serial.println(true == 1); //印出 1
//true 對應到 1 因此也相等

而 大於小於等

Serial.println(1 > 2); //印出 false

Serial.println(true > false); //印出 true
//true 對應到 1 | false 對應到0

Serial.println('C' > 'A'); //印出 true

Serial.println('C' >= 'C'); //印出 true

Serial.println('C' < 'A'); //印出 false

Serial.println('C' <= 'C'); //印出 true

//因 字元 可轉為 ASCII 一種數字
//故出現的結果為兩字元ASCII碼的大小比較
//http://shihyu.github.io/books/apas01.html

千萬不要 把比較運算子用於陣列

//創建一整數陣列a 並把陣列大小設為3
//並指派為 {1, 2, 3} 的陣列 (index 0 => 1, index 1 => 2, index 2 => 3)
int a[3] = {1, 2, 3};

//創建一整數陣列b 並把陣列大小設為3
//並指派為 {1, 2, 3} 的陣列 (index 0 => 1, index 1 => 2, index 2 => 3)
int b[3] = {1, 2, 3}; 

Serial.println(a == b); //印出 false

//原因是 在這邊 C++ 的 a 與 b 陣列的是兩陣列的 "記憶體位置"
//

Serial.println(a == a); //印出 true
//a 的記憶體位置與 a 相同

二、常見用法

在晚些的文章會講到 if 與 for 或 while 等

他們的用法皆為 if(布林值) while(布林值) for(起始函式 ; 布林值 ; 結尾函式)

以及在賦值時也可使用

bool b = 2 > 1;
Serial.println(b); //印出 1

int n = 2 > 1;
Serial.println(n) //印出 1
//布林值被轉換成int 對應到 1 或 0

if(true) {
    Serial.println("Success Execute!"); //成功印出 Success Execute!
}

if(b) {
    Serial.println("Success Execute!"); //成功印出 Success Execute!
}

if(n) {
    Serial.println("Success Execute!"); //成功印出 Success Execute!
}

if(false) {
    Serial.println("Success Execute!"); //無法被執行到
}

if(0) {
    Serial.println("Success Execute!"); //無法被執行到
}

if(2 > 1) {
    Serial.println("Success Execute!"); //成功印出 Success Execute!
}
//2 > 1 為 true

故 比較式 出來的數值 是 布林值

三、延伸閱讀

陣列| C++與演算法

Comparing arrays for equality in C++ - Stack Overflow 註: 此篇有稍解釋為何陣列無法與陣列比較 因此與指標相關 故延伸閱讀可讀下一篇文

C語言筆記— 指標(Pointers)

四、本文重點節錄

https://i.redd.it/1bguzmhst8oz.jpg

寫出這種爛 Code 我見一個打一個(X