[TH] Arduino: Operators

บทความนี้รวบรวมเนื้อหาเกี่ยวกับเครื่องหมายดำเนินการ (Operators) ที่ใช้ใน C++ เพื่อใช้เขียนนิพจน์ (Expression) ของคำสั่ง โดยเครื่องหมายดำเนินการแบ่งเป็น 5 กลุ่ม คือ เครื่องหมายดำเนินการทางคณิตศาสตร์ (Arithmetic) เครื่องหมายดำเนินการทางบูล (Boolean) เครื่องหมายดำเนินการเปรียบเทียบ (Comparison) เครื่องหมายดำเนินการทางบิต (bitwise) และเครื่องหมายดำเนินการแบบประกอบกัน (Compound)

เครื่องหมายดำเนินการทางคณิตศาสตร์

เครื่องหมายดำเนินการทางคณิตศาสตร์เป็นเครื่องหมายเกี่ยวกับการคำนวณ โดยรูปแบบของการใช้งานอยู่ในรูปแบบต่อไปนี้

LOpr Operator ROpr

รายการเครื่องหมายดำเนินการเป็นดังนี้

ชื่อเรียกเครื่องหมายความหมาย
กำหนดค่า=นำค่าจาก ROpr ไปเก็บใน LOpr
การบวก+คืนค่าผลการบวก LOpr ด้วย ROpr
การลบคืนค่าการลบ LOpr ด้วย ROpr
การคูณ*คืนค่าผลการคูณ LOpr ด้วย ROpr
การหาร/คืนค่าการหาร LOpr ด้วย ROpr
การหาเศษจากการหาร%คืนค่าการหาเศษจากการหาร LOpr ด้วย ROpr

เครื่องหมายดำเนินการทางบูล

เครื่องหมายดำเนินการทางบูลเป็นการเปรียบเทียบทางตรรกะ ซึ่งใน C++ มองค่า false เป็น 0 ส่วนค่า true คือค่าใด ๆ ที่ไม่ใช่ 0 โดยการกระทำทางตรรกะประกอบด้วย การและ การหรือ และนิเสธ ดังตารางต่อไปนี้

ชื่อเรียกเครื่องหมายการใช้งานความหมาย
และ&&LOpr && ROprถ้า LOpr และ ROprเป็น true คืนค่าการดำเนินการเป็น true
กรณีอื่น คืนค่าเป็น false
หรือ||LOpr || ROprถ้า LOpr หรือ ROprเป็น true คืนค่าการดำเนินการเป็น true
ยกเว้นกรณี ถ้า LOpr และ ROpr เป็น false จะคืนค่าเป็น false
นิเสธ! ! Operandถ้า Operand เป็น true จะคืนค่าเป็น false แต่ถ้า Operand
เป็น false จะคืนค่าเป็น true

เครื่องหมายดำเนินการเปรียบเทียบ

เครื่องหมายดำเนินการเปรียบเทียบเป็นเครื่องหมายเกี่ยวกับการเปรียบค่าทางซ้ายกับค่าทางขวา และให้คำตอบกลับมาเป็น true หรือ false โดยรูปแบบของการใช้งานอยู่ในรูปแบบต่อไปนี้

LOpr Operator ROpr

รายการเครื่องหมายดำเนินการเป็นดังนี้

ชื่อเรียกเครื่องหมายความหมาย
เท่ากัน==คืนค่าเป็นจริงถ้า LOpr เท่ากับ ROpr
ไม่เท่ากัน!=คืนค่าเป็นจริงถ้า LOpr ไม่เท่ากับ ROpr
น้อยกว่า<คืนค่าเป็นจริงถ้า LOpr น้อยกว่า ROpr
มากกว่า>คืนค่าเป็นจริงถ้า LOpr มากกว่า ROpr
น้อยกว่าหรือเท่ากัน<=คืนค่าเป็นจริงถ้า LOpr น้อยกว่าหรือเท่ากันกับ ROpr
มากกว่าหรือเท่ากัน>=คืนค่าเป็นจริงถ้า LOpr มากกว่าหรือเท่ากันกับ ROpr

เครื่องหมายดำเนินการทางบิต

เครื่องหมายดำเนินการทางบิตมีความแตกต่างจากการดำเนินการแบบบูลตรงที่ การดำเนินการแบบบูลนั้นพิจารณาค่าของตัวดำเนินการ ถ้ามีค่าเป็น 00 หมายถึงเป็น false และถ้าไม่ใช่ 0 มองค่านั้นเป็น true แต่กรณีของการดำเนินการทางบิตนั้นเป็นการกระทำในระดับบิต โดยเทียบบิตของแต่ละหลักของตัวดำเนินการทางซ้ายและทางขวาตามคุณสมบัติของการเปรียบเทียบเพื่อสร้างบิตผลลัพธ์ของบิตในหลักนั้นออกมา ซึ่งเครื่องหมายที่ใช้ในกลุ่มนี้คือ การและ การหรือ การเอ็กคลูซีฟออร์ และการกลับบิต

Bit-LOprBit-ROprBit-LOpr & Bit-ROpr
000
010
100
111
Bit-LOprBit-ROprBit-LOpr | Bit-ROpr
000
011
101
111
Bit-LOprBit-ROprBit-LOpr ^ Bit-ROpr
000
011
101
110
Bit-Operand~ Bit-Operand
01
10

นอกจากการดำเนินการที่กล่าวไปแล้ว การดำเนินการทางบิตมีอีก 2 คำสั่งคือ การเลื่อนบิตไปทางซ้ายและการเลื่อนบิตไปทางขวา ซึ่งรูปแบบของการใช้งานเป็นดังนี้

Operand << จำนวนบิตที่ต้องการเลื่อนไปทางซ้าย

Operand >> จำนวนบิตที่ต้องการเลื่อนไปทางขวา

เครื่องหมายดำเนินการแบบประกอบกัน

เครื่องหมายดำเนินการแบบประกอบกันเป็นการรวมขั้นตอนการสั่งงานให้เหลือเพียงคำสั่งเดียว ซึ่งเครื่องหมายในกลุ่มนี้เป็นดังนี้

ชื่อเรียกเครื่องหมายการใช้งานความหมาย
การเพิ่มค่า++operand++1. นำค่า Operand ไปใช้งาน
2. Operand = Operand+1
การเพิ่มค่า++++operand1. Operand = Operand+1
2. นำค่า Operand ไปใช้งาน
การลดค่าoperand1. นำค่า Operand ไปใช้งาน
2. Operand = Operand-1
การลดค่าoperand1. Operand = Operand-1
2. นำค่า Operand ไปใช้งาน
การบวก+=LOpr += ROprLOpr = LOpr + ROpr
การลบ-=LOpr -= ROprLOpr = LOpr – ROpr
การคูณ*=LOpr *= ROprLOpr = LOpr * ROpr
การหาร/=LOpr /= ROprLOpr = LOpr / ROpr
การหาเศษจากการหาร%=LOpr %= ROprLOpr = LOpr % ROpr
และ&=LOpr &= ROprLOpr = LOpr & ROpr
หรือ|=LOpr |= ROprLOpr = LOpr | ROpr

สรุป

จากบทความนี้ผู้อ่านได้ทำความรู้จักกับเครื่องหมายดำเนินการต่าง ๆ ในภาษา C++ ของ Arduino เป็นที่เรียบร้อยแล้ว ในบทความตอนหน้าจะเป็นการทำความรู้จักกับการสร้างนิพจน์ (expression) สุดท้ายขอให้สนุกกับการเขียนโปรแกรมครับ

เอกสารอ้างอิง

(C ) 2020-2021, โดย อ.ดนัย เจษฎาฐิติกุล/อ.จารุต บุศราทิจ
ปรับปรุงเมื่อ 2021-05-24, 2021-09-18