8.1หลักการและวิธีการใช้งานตัวดำเนินการและนิพจน์ในภาษา C และ C++

หลักการและวิธีการใช้งานตัวดำเนินการและนิพจน์ในภาษา C และ C++

นิพจน์  (Expression) คือ  การนำค่าคงที่หรือตัวแปรมาเชื่อมต่อกัน ด้วยเครื่องหมายทางคณิตศาสตร์  เช่น
c = a * b
(10 + 5 ) * 10 % 9 = 15
(8 * a + 2 * b)/c
5 + (5 – 1 ) * 4 = 21


ตัวดำเนินการ (Operator)  ในโปรแกรมภาษาซีมีตัวดำเนินการหลายชนิดเพื่อใช้ในการเขียนโปรแกรม  ดังนี้
          1.ตัวดำเนินการคณิตศาสตร์
        2.ตัวดำเนินการยูนารี
        3.ตัวดำเนินการเปรียบเทียบ
        4.ตัวดำเนินการตรรกะ
        5.ตัวดำเนินการกำหนดค่าแบบผสม
        6.ตัวดำเนินการเงื่อนไข
1.      ตัวดำเนินการคณิตศาสตร์  เช่น บวก ลบ คูณ หาร เปอร์เซ็นต์  ดังตัวอย่างในตารางข้างล่างนี้
ตัวดำเนินการ
ความหมาย
ตัวอย่าง
+
บวก (Addition)
X + y
-
ลบ (Subtraction)
X – y
*
คูณ (Multiplication)
X * y
/
หาร (Division)
X / y
%
หารเอาผลลัพธ์เฉพาะเศษ (Modulus)
X % y

ตัวอย่าง    กำหนดให้ และ  เป็นตัวแปรชนิดเลขจำนวนเต็ม (int)  โดยที่ x = 10 , y = 2
นิพจน์
ผลลัพธ์
X + y
12
X – y
8
X * y
20
X / y
5
X % y
0

2.  ตัวดำเนินการยูนารี  
       การใช้เครื่องหมายลบนำหน้าค่าตัวแปร  จะทำให้ค่าถูกเปลี่ยนเป็นค่าติดลบโดยทันที
เช่น 
-10 , -x   (มิใช่ตัวดำเนินการลบแต่อย่างใด)
ตัวอย่าง   ให้ และ เป็นตัวแปรชนิดเลขจำนวเต็ม (int) โดยที่ a = 10 และ b = 2  ดังนั้น
นิพจน์
ผลลัพธ์
a + b
12
-a + b
-8
 -a * b
-20
a - - b
12

·       ตัวดำเนินการเพิ่มค่าและตัวดำเนินการลบค่า  จะใช้เครื่องหมาย - - เพื่อลดค่าทีละหนึ่ง
และเครื่องหมาย 
+ +  เพื่อเพิ่มค่าทีละหนึ่ง  โดยเขียนนำหน้าค่าตัวแปรหรือหลังตัวแปรก็ได้
การเพิ่มค่าทีละหนึ่ง 
(Increment)
      ใช้ 
a++ หรือ ++a  ก็มีความหมายเดียวกันกับนิพจน์ a = a + 1
การลดค่าทีละหนึ่ง (Decrement)
     
ใช้ b-- หรือ --b  ก็มีความหมายเดียวกันกับนิพจน์ a = b – 1
                   ตารางแสดงตัวดำเนินการยูนารีแบบเพิ่มค่าและลดค่าทีละหนึ่ง
นิพจน์
ความหมาย
++a
เพิ่มค่าอีกหนึ่งให้กับ  a ก่อน   แล้วจึงนำค่าใหม่ของ ไปใช้งาน
a++
นำค่าเดิมของ a ไปใช้งานก่อน  แล้วจึงเพิ่มค่า อีกหนึ่ง
--a
ลดค่าลงหนึ่งให้กับ  a ก่อน  แล้วจึงนำค่าใหม่ของ ไปใช้งาน
a--
นำค่าเดิมของ a ไปใช้งานก่อน  แล้วจึงลดค่า a  ลงอีกหนึ่ง

    3. ตัวดำเนินการเปรียบเทียบ คือ เครื่องหมายที่ใช้ในการเปรียบเทียบในทางคณิตศาสตร์
ผลลัพธ์จะมี กรณีคือ ถ้าผลลัพธ์ถูกต้องหรือเป็นจริง (True) จะมีค่าเป็น ถ้าผลลัพธ์ผิดหรือเป็นเท็จ (False) จะมีค่าเป็น ผลลัพธ์ของการเปรียบเทียบ  เรียกว่า ค่าคงที่บูลีน (Boolean Constant)

ตัวดำเนินการ
ความหมาย
ตัวอย่าง
มากกว่า (Greather Than)
X > y
<
น้อยกว่า (Less Than)
X < y
>=
มากกว่าหรือเท่ากับ (Greather Than or Equal)
X >= y
<=
น้อยกว่าหรือเท่ากับ (Less Than or Equal)
X <= y
==
เท่ากับ (Equal)
X == y
!=
ไม่เท่ากับ (Not Equal)
X != y

 4.      ตัวดำเนินการตรรกะ  คือเครื่องหมายที่ใช้เชื่อมเงื่อนไข เงื่อนไข หรือมากกว่า เงื่อนไข
เพื่อให้การเปรียบเทียบมีความละเอียดมากขึ้น ใช้สัญลักษณ์แทนในแต่ละเครื่องหมาย ดังนี้
ตัวดำเนินการ
อธิบาย
ความหมาย
&&
และ (and)
จะให้ผลลัพธ์เป็นจริงเมื่อเงื่อนไขทั้งสองเป็นจริง แต่ถ้าเงื่อนไขใดเป็นเท็จ หรือทั้งสองเงื่อนไขเป็นเท็จจะทำให้ผลลัพธ์เป็นเท็จ
||
หรือ (or)
จะให้ผลลัพธ์เป็นจริงเมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง หรือเป็นจริงทั้งสองเงื่อนไข แต่ถ้าเป็นเท็จทั้งสองเงื่อนไขจะทำให้ผลลัพธ์เป็นเท็จ
!
ไม่ใช่ (not)
จะให้ผลลัพธ์เป็นจริงเมื่อเงื่อนไขหลัง not เป็นเท็จ แต่ถ้าเงื่อนไขหลัง not เป็นจริงจะทำให้ผลลัพธ์เป็นเท็จ ตัวดำเนินการ ความหมาย

                โดยผลลัพธ์จะเป็นไปตามตารางค่าความจริง ดังนี้ (T = True , F = False)
ตัวเปรียบเทียบ
ผลลัพธ์
a
b
a && b
a || b
!a
!b
T
T
T
T
F
F
T
F
F
T
F
T
F
T
F
T
T
F
F
F
F
F
T
T

5.  
ตัวดำเนินการกำหนดค่าแบบผสม    จะประกอบด้วย + = , - = , * = , / = และ % =
โดยสามารถแสดงได้ดังนี้
นิพจน์ทั่วไป
นิพจน์แบบผสม
a = a + 5
a + = 5
a = a - b
a - = 5
a = a * (b - 3)
a * = (b – 3)
a = a / 3
a / = -
a = a % (b – 2)
a % = (b - 2)

6.  ตัวดำเนินการเงื่อนไข  จะนำไปใช้ในการทดสอบค่านิพจน์ทางตรรกะว่า จริงหรือเท็จ ดังนี้
รูปแบ    expression1 ?    expression2  :  expression3
                  โดยที่              expression 1  หมายถึง  นิพจน์เงื่อนไข
                        
                 expression 2  หมายถึง  นิพจน์กรณีเป็นจริง
                        
                  expression 3  หมายถึง  นิพจน์กรณีเป็นเท็จ


ตัวอย่าง
                 result  =   (x < y) ?  0 : 100 ;       หรือ         if   (x < y)
                                                                                        result = 0 ;
                                                                                     else
                                                                                         result = 100 ;


หมายความว่า        ถ้า มีค่าน้อยกว่า y  แล้ว
                            กรณีเป็นจริง    ตัวแปร 
result  จะถูกกำหนดค่าเป็น 0                            กรณีเป็นเท็จ    ตัวแปร result  จะถูกกำหนดค่าเป็น 100


ตัวดำเนินการกับลำดับความสำคัญ               ลำดับการประมวลผลของนิพจน์  จะทำการประมวลผล ในส่วนของวงเล็บก่อนในกรณีที่มีวงเล็บ จากนั้นจะคำนวณไปตามลำดับของการประมวลดังตารางข้างล่างนี้ และหากมีเครื่องหมายที่อยู่ในลำดับการประมวลผลเดียวกันจะทำการคำนวณจากด้าน ซ้ายไปด้านขวา

ลำดับ
ตัวดำเนินการ
ความหมาย
1
( )
เครื่องหมายวงเล็บ
2
++ , --
ตัวดำเนินการเพิ่มค่า , ลดค่า
3
-, !
ยูนารีลบ , ตรรกะ NOT
4
* , / , %
คูณ หาร โมดูลัส
5
+ , -
บวก ลบ

 ตัวอย่างนิพจน์การคำนวณ
ตัวอย่าง 1   (10 -34) * 5 = 35
ลำดับการประมวลผล
10 - 3 = 7 แล้วคูณกับ 5 ได้ผลลัพธ์ 35
ตัวอย่าง 2   5 + 10 *2 = 25
ลำดับการประมวลผล
10 * 2 = 20 แล้วบวกดับ ได้ผลลัพธ์ 25
ตัวอย่าง 3   (2 + 7) * 4 % 10 = 6
ลำดับการประมวลผล
2 + 7 = 9 แล้วคูณกับ ได้ 36 หารแบบเอาเศษด้วย 10 ได้ 6
ตัวอย่าง 4   2 + 7 * 4 % 10 = 10
ลำดับการประมวลผล
7 * 4 = 28 แล้วหารแบบเอาเศษด้วย 10 ได้ บวกกับ เป็น 10
ตัวอย่าง 5   10 + 2 * 8 / 4 * 3 – 5 = 17


ลำดับการประมวลผล
1. 2 * 8 = 16
2. 16 / 4 = 4
3. 4 * 3 = 12
4. 12 + 10 = 22
5. 22 – 5 = 17