Arduino - 運算子

運算子是告訴編譯器執行特定數學或邏輯函式的符號。C 語言內建運算子豐富,並提供以下型別的運算子 -

  • 算術運算子
  • 比較運算子
  • 布林運算子
  • 按位運算子
  • 複合運算元

算術運算子

假設變數 A 被賦值為 10,變數 B 被賦值為 20 然後 -

運算子名稱 運算子 描述
賦值運算子 = 將值儲存在等號左側的變數中等號的右側。 A = B
加成 + 新增兩個運算元 A+B 結果為 30
減法 - 從第一個減去第二個運算元 A - B 結果為 -10
乘法 * 將兩個運算元相乘 A \* B 結果為 200
除法 / 用分母除以分子 B / A 結果為 2
取模 % 模數運算子和整數除法後的餘數 B%A 結果為 0

算術運算子舉例

void loop () {
   int a = 9,b = 4,c;
   c = a + b;
   c = a - b;
   c = a * b;
   c = a / b;
   c = a % b;
}

算術運算子結果

a + b = 13
a - b = 5
a * b = 36
a / b = 2
Remainder when a divided by b = 1

比較運算子

假設變數 A 值為 10,變數 B 值為 20,

運算子名稱 運算子 描述
等於 == 檢查兩個運算元的值是否相等,如果是,則條件為真。 A == B 不為真
不等於 != 檢查兩個運算元的值是否相等,如果值不相等則條件為真。 A = B 為真
少於 < 檢查左運算元的值是否小於右運算元的值,如果是,則條件為真。 A < B 為真
大於 > 檢查左運算元的值是否大於右運算元的值,如果是,則條件為真。 A > B 不為真
小於或等於 <= 檢查左運算元的值是否小於或等於右運算元的值,如果是,則條件為真。 A <= B 為真
大於或等於 >= 檢查左運算元的值是否大於或等於右運算元的值,如果是,則條件為真。 A >= B 不為真

比較運算子舉例

void loop () { 
   int a = 9,b = 4
   bool c = false;
   if(a == b)
      c = true;
   else
      c = false;

   if(a != b)
      c = true;
   else
      c = false;
   
   if(a < b)
      c = true;
   else
      c = false;
   
   if(a > b)
      c = true;
   else
      c = false;
   
   if(a <= b)
      c = true;
   else
      c = false;
   
   if(a >= b)
      c = true;
   else
      c = false;
}

結果

c = false
c = true
c = false
c = true
c = false
c = false

布林運算子

假設變數 A 值為 10,變數 B 值為 20,

運算子名稱 運算子 描述
&& 稱為邏輯與運算子。如果兩個運算元都不為零,則條件變為真。 A && B 是真的
` `
! 稱為邏輯非運算子。用於反轉其運算元的邏輯狀態。如果條件為真,則經非運算子後將為 false。 !(A && B) 不為真

### 布林運算子舉例

void loop () {
   int a = 9,b = 4
   bool c = false;
   if((a > b)&& (b < a))
      c = true;
   else
      c = false;

   if((a == b)|| (b < a))
      c = true;
   else
      c = false;

   if( !(a == b)&& (b < a))
      c = true;
   else
      c = false;
}

結果

c = true
c = true
c = true

按位運算子

假設變數 A 為 60 - 0011 1100,變數 B 為 13 - 0000 1101

運算子名稱 運算子 描述
& 如果二進位制 AND 運算子存在於兩個運算元中,則它會將結果複製到結果中。 (A&B)將給出 12,即 0000 1100
` ` 二進位制 OR 運算子如果存在於任一運算元中,則複製一位
異或 ^ 二進位制異或運算子如果在一個運算元中設定但不在兩個運算元中設定,則複製該位。 A ^ B 結果為 49,即 0011 0001
~ 二元一元補語運算子是一元的,具有“翻轉”位的效果。 ~A 結果為 -60,即 ``1100 0011`
左移 << 二進位制左移運算子。左運算元值向左移動右運算元指定的位數。 A << 2 將給出 240,即 1111 0000
右移 >> 二進位制右移運算子。左運算元值向右移動右運算元指定的位數。 A >> 2 將給出 15,即 0000 1111

按位操作符舉例

void loop () {
   int a = 10,b = 20
   int c = 0;
   c = a & b ;
   c = a | b ;
   c = a ^ b ;
   c = a ~ b ;
   c = a << b ;
   c = a >> b ; 
}

結果

c = 12
c = 61
c = 49
c = -60
c = 240
c = 15

複合運算元

假設變數 A 為 10,變數 B 為 20 然後 -

運算子名稱 運算子 描述
遞增 ++ 遞增運算子,將整數值增加 1 A++,結果為 11
遞減 -- 遞減運算子,將整數值減 1 A--,結果為 9
複合增 -= 新增 AND 賦值運算子。它將右運算元新增到左運算元並將結果分配給左運算元 B += A,相當於 B = B + A
複合減 -= 減去 AND 賦值運算子。它從左運算元中減去右運算元,並將結果賦給左運算元 B - = A 相當於 B = B - A.
複合乘 *= 乘以 AND 賦值運算子。它將右運算元與左運算元相乘,並將結果賦給左運算元 B * = A 等於 B = B * A.
複合除 /= 除法和賦值運算子。它將左運算元與右運算元分開,並將結果賦給左運算元 B /= A 相當於 B = B / A.
複合取模 %= 取模和賦值運算子。它使用兩個運算元來獲取模數,並將結果賦給左運算元 B %= A 等於 B = B % A
按位或複合 ` =` 按位或運算和賦值運算子
按位與複合 &= 按位與和賦值運算子 A &= 2A = A & 2 相同

複合運算子舉例

void loop () {
   int a = 10,b = 20
   int c = 0;
   
   a++;
   a--;
   b += a;
   b -= a;
   b *= a;
   b /= a;
   a %= b;
   a |= b;
   a &= b;
}

結果

a = 11
a = 9
b = 30
b = 10
b = 200
b = 2
a = 0
a = 61
a = 12