ตัวดาเนินการและนิพจน์ 
(OPERATOR AND EXPRESSIONS)
นิพจน์ 
(Expressions) 
นิพจน์ (Expression) คือ ข้อความหรือประโยคที่เขียนอยู่ ในรูปสัญลักษณ์ โดยนาข้อมูล, ตัวแปร, ฟังก์ชัน หรือค่าคงที่ มา สัมพันธ์กับตัวดาเนินการ (Operator) อย่างใดอย่างหนึ่ง สิ่งที่ ควรระลึกอยู่เสมอคือในการสร้างนิพจน์ 1 นิพจน์นั้นคือ นิพจน์ จะต้องมีตัวถูกระทา (Operand) อย่างน้อยหนึ่งตัว และตัว ดาเนินการ (Operator) อย่างน้อยหนึ่งตัว
นิพจน์ 
(Expressions) 
ตัวอย่างการสร้างนิพจน์ โดยแสดงความสัมพันธ์ระหว่างตัวถูกกระทา ตัว ดาเนินการและนิพจน์ ดังนี้ เช่น 
นิพจน์ 
C++ 
C + 1 
ตัวถูกกระทาตัวที่ 1 (ตัวแปร) 
ค่าคงที่ 
ตัวดาเนินการ 
A + B –(C + 2) 
ตัวดาเนินการที่ 1 
ตัวถูกกระทาตัวที่ 1 (ตัวแปร) 
ตัวถูกกระทาตัวที่ 2 (ตัวแปร) 
ตัวดาเนินการที่ 2 
ตัวถูกกระทาตัวที่ 3 (นิพจน์) 
C + 2 
ตัวถูกกระทาตัวที่ 1 (ตัวแปร) 
ค่าคงที่ 
ตัวดาเนินการ
ตัวดาเนินการ (Operator) 
ตัวดาเนินการ 
ตัวดาเนินการกาหนดค่า (Assignment Operators) 
ตัวดาเนินการทางคณิตศาสตร์ (Arithmetic Operators) 
ตัวดาเนินการเปรียบเทียบ (Comparison Operators) 
ตัวดาเนินการตรรกะ (Logical Operators) 
ตัวดาเนินการแบบมีเงื่อนไข (Conditional Operators) 
ตัวดาเนินการระดับบิต (Bitwise Operators) 
ตัวดาเนินการบอกขนาดชนิดของข้อมูล (Sizeof Operators) 
ตัวดาเนินการยูนารี (Unary Operators) 
ในการเขียนโปรแกรมทุกครั้งนั้นจะต้องมีการประมวลผลเข้ามาเกี่ยวข้องเสมอ แล้วสิ่งที่ทาให้เกิดการประมวลผลนั้นก็คือ ตัวดาเนินการ สามารถแบ่งออกเป็น ประเภทต่าง ๆ ได้ดังนี้
1. ตัวดาเนินการกาหนดค่า (Assignment Operator) 
ใช้สาหรับการกาหนดค่าให้กับตัวแปรทางด้านซ้ายของตัวดาเนินการ ในการ กาหนดค่าของตัวดาเนินการแต่ละชนิด จะมีหลักการทางานที่แตกต่างกัน 
ตัวดาเนินการ 
ความหมาย 
= 
เท่ากับ : การนาค่าตัวถูกกระทาที่ได้จากด้านขวาของตัวดาเนินการ มา ใส่ในตัวถูกกระทาทางด้านซ้ายของตัวดาเนินการ 
+= 
บวกเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ ค่าตัว ถูกกระทาด้านซ้าย บวกกับ ค่าตัวถูกกระทาด้านขวาของตัวดาเนินการ 
-= 
ลบเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ ค่าตัวถูก กระทาด้านซ้าย ลบกับ ค่าตัวถูกกระทาด้านขวาของตัวดาเนินการ 
*= 
คูณเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ ค่าตัวถูก กระทาด้านซ้าย คูณกับ ค่าตัวถูกกระทาด้านขวาของตัวดาเนินการ
1. ตัวดาเนินการกาหนดค่า (Assignment Operator) (ต่อ) 
ตัวดาเนินการ 
ความหมาย 
/= 
หารเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ ค่าตัว ถูกกระทาด้านซ้าย หารกับ ค่าตัวถูกกระทาด้านขวาของตัวดาเนินการ 
%= 
หารเอาเศษเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ 
เศษเหลือจากการหารระหว่างค่าตัวถูกกระทาด้านซ้ายกับค่าตัวถูก กระทาด้านขวาของตัวดาเนินการ
2. ตัวดาเนินการทางคณิตศาสตร์ (Arithmetic Operators) 
ตัวดาเนินการทางคณิตศาสตร์ในการเขียนโปรแกรม จะมีการทางาน เหมือนกับการใช้ทางคณิตศาสตร์ทั่วไป โดยมีตัวดาเนินการต่าง ๆ ดังนี้ 
ตัวดาเนินการ 
ความหมาย 
ตัวอย่าง 
ผลลัพธ์ 
+ 
การบวก (Addition) 
10 + 4 
14 
10 + 4.0 
10.0 + 4 
10.0 + 4.0 
14.00 
‘A’ + 2 
67 
- 
การลบ (Subtraction) 
10 –4 
6 
10.0 –4 
10 –4.0 
10.0 –4.0 
6.00
2. ตัวดาเนินการทางคณิตศาสตร์ (Arithmetic Operators) (ต่อ) 
ตัวดาเนินการ 
ความหมาย 
ตัวอย่าง 
ผลลัพธ์ 
* 
การคูณ (Multiply) 
10 * 4 
40 
10 * 4.0 
10.0 * 4 
10.0 * 4.0 
40.00 
10 * -4 
-40 
-10 * -4 
40 
% 
การหารเอาเศษ (Modulus) 
11%4 
3 
4%10 
4 
-11%4 
-3
2. ตัวดาเนินการทางคณิตศาสตร์ (Arithmetic Operators) (ต่อ) 
ตัวดาเนินการ 
ความหมาย 
ตัวอย่าง 
ผลลัพธ์ 
/ 
การหาร (Divide) 
10 / 4 
2 
10.0 / 4 
10 / 4.0 
10.0 / 4.0 
2.50 
-11/4 
-2 
11/-4 
-2 
-11/-4 
2
3. ตัวดาเนินการยูนารี (Unary Operators) 
ตัวดาเนินการ 
ความหมาย 
รูปแบบ 
ตัวอย่าง 
การทางาน 
ข้อสังเกต 
++ 
เพิ่มค่าหนึ่งค่า ให้กับตัวแปร 
Postfix 
X =A++ 
X =A 
A =A + 1 
จะกาหนดค่าให้กับตัวแปร X 
ก่อนเพิ่มค่าให้กับตัวแปร A 
Prefix 
X=++A 
A =A + 1 
X =A 
จะเพิ่มค่าให้กับตัวแปร A 
ก่อนกาหนดค่าให้กับตัวแปร X 
-- 
ลดค่าลงหนึ่งค่า 
ให้กับตัวแปร 
Postfix 
X =A-- 
X =A 
A =A -1 
จะกาหนดค่าให้กับตัวแปร X 
ก่อนลดค่าให้กับตัวแปร A 
Prefix 
X =--A 
A =A -1 
X =A 
จะลดค่าให้กับตัวแปร A 
ก่อนกาหนดค่าให้กับตัวแปร X 
+ 
บวก (plus) 
Prefix 
A =+2 
ค่าตัวแปร A 
จะมีค่าเท่ากับ 2 
กรณีเป็นค่าบวกจะใส่เครื่องหมาย + หรือไม่ก็ได้ เพราะกรณีไม่ใส่เครื่องหมาย คอมไพเลอร์จะมองค่านั้นเป็นบวกเสมอ 
- 
ลบ (minus) 
Prefix 
A =-2 
ค่าตัวแปร A 
จะมีค่าเท่า -2 
เครื่องหมายลบหน้าตัวเลขแสดงถึงค่าเป็น จานวนลบ 
A =-2 
A =-A 
A =-2 
A =2 
เมื่อใส่เครื่องหมายลบหน้าตัวแปรใด ๆ ผลลัพธ์ที่ได้จะเป็นค่าตรงกันข้าม
4. ตัวดาเนินการเปรียบเทียบ (Comparision Operators) 
เป็นตัวดาเนินการสาหรับเปรียบเทียบข้อมูลระหว่างตัวถูกกระทาทางด้านซ้ายและ ด้านขวา ผลลัพธ์ที่ได้จะมีค่าเป็นจริง (True) หรือเท็จ (False) เท่านั้น 
ตัวดาเนินการ 
ความหมาย 
ตัวอย่าง 
= = 
เท่ากับ : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายกับ ด้านขวาของตัวดาเนินการ ว่ามีค่าเท่ากันหรือไม่ ถ้าเท่ากันจะ ให้ผลลัพธ์เป็นจริง ถ้าไม่เท่ากันจะให้ผลลัพธ์เป็นเท็จ 
A = =B 
!= 
ไม่เท่ากับ : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายกับ ด้านขวาของตัวดาเนินการ ว่ามีค่าไม่เท่ากันหรือไม่ ถ้าไม่ เท่ากันจะให้ผลลัพธ์เป็นจริง ถ้าเท่ากันจะให้ผลลัพธ์เป็นเท็จ 
A !=B 
> 
มากกว่า : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายมีค่า มากกว่าตัวถูกกระทาด้านขวาของตัวดาเนินการหรือไม่ ถ้า มากกว่าจะให้ผลลัพธ์เป็นจริง ถ้าน้อยกว่าจะให้ผลลัพธ์เป็นเท็จ 
A > B
4. ตัวดาเนินการเปรียบเทียบ (Comparision Operators) (ต่อ) 
ตัวดาเนินการ 
ความหมาย 
ตัวอย่าง 
>= 
มากกว่าหรือเท่ากับ : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายมีค่า มากกว่าหรือเท่ากับตัวถูกกระทาด้านขวาของตัวดาเนินการ ถ้า มากกว่าหรือเท่ากับจะให้ผลลัพธ์เป็นจริง ถ้าไม่ใช่จะให้ผลลัพธ์เป็นเท็จ 
A >= B 
< 
น้อยกว่า : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายมีค่าน้อยกว่าตัว ถูกกระทาด้านขวาของตัวดาเนินการหรือไม่ ถ้าน้อยกว่าจะให้ผลลัพธ์ เป็นจริง ถ้ามากกว่าจะให้ผลลัพธ์เป็นเท็จ 
A < B 
<= 
น้อยกว่าหรือเท่ากับ : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายมีค่า น้อยกว่าหรือเท่ากับตัวถูกกระทาด้านขวาของตัวดาเนินการ ถ้าน้อย กว่าหรือเท่ากับจะให้ผลลัพธ์เป็นจริง ถ้าไม่ใช่จะให้ผลลัพธ์เป็นเท็จ 
A <= B
5. ตัวดาเนินการตรรกะ (Logial Operators) 
ตัวดาเนินการตรรกะ (Logial Operators) เป็นตัวดาเนินการทางด้าน ตรรกศาสตร์ ใช้สาหรับกาหนดเงื่อนไขมากกว่า 1 เงื่อนไข ซึ่งผลลัพธ์ที่ได้จะมีค่า เป็นจริง(True) หรือ เท็จ(False) เท่านั้น 
ตัวดาเนินการ 
ความหมาย 
ตัวอย่าง 
&& 
และ : ใช้กาหนดเงื่อนไขในกรณีที่ต้องการให้เงื่อนไข ของนิพจน์ด้านซ้ายและด้านขวาของตัวดาเนินเป็นจริง ทั้งสองด้าน จึงทางานที่ต้องการ 
(A>B) && A>C) 
|| 
หรือ : ใช้กาหนดเงื่อนไขในกรณีที่ต้องการให้เงื่อนไข ของนิพจน์และด้านขวาของตัวดาเนินการเป็นจริงด้าน ใดด้านหนึ่งหรือทั้งสองด้าน จึงทางานที่ต้องการ 
(A>B) || (A>C) 
! 
นิเสธ (not) : ใช้กาหนดเงื่อนไขในกรณีที่ต้องการค่า ความจริงตรงกันข้าม 
!(A < B)
p 
q 
p && q 
p || q 
!p 
!q 
จริง 
จริง 
จริง 
จริง 
เท็จ 
เท็จ 
จริง 
เท็จ 
เท็จ 
จริง 
เท็จ 
จริง 
เท็จ 
จริง 
เท็จ 
จริง 
จริง 
เท็จ 
เท็จ 
เท็จ 
เท็จ 
เท็จ 
จริง 
จริง 
ตารางเปรียบเทียบค่าความจริงของนิพจน์ โดยกาหนดให้ p และ q เป็นตัวถูก ดาเนินการทางตรรกศาสตร์
ตัวดาเนินการชนิดนี้ใช้สาหรับตรวจสอบเงื่อนไขของนิพจน์ ว่า มีความจริงเป็นจริง (True) หรือเท็จ (False)โดยมีรูปแบบการ ใช้งานดังนี้ 
โดยที่Expression คือ นิพจน์เงื่อนไข 
ValueTrue คือ ค่าที่ได้กรณีที่เงื่อนไขเป็นจริง 
ValueFalse คือ ค่าที่ได้กรณีเงื่อนไขเป็นเท็จ 
6. ตัวดาเนินการแบบมีเงื่อนไข (Condition Operators) 
Expression ? ValueTrue: ValueFalse;
ตัวดาเนินการชนิดนี้จะใช้สาหรับหาขนาดชนิดของข้อมูลต่าง ๆ ที่ ต้องการรู้ โดยมีรูปแบบการใช้งานดังนี้ 
7. ตัวดาเนินการบอกขนาดชนิดข้อมูล (Sizeof Operators) 
sizeof(Data) 
โดยที่sizeof คือ ตัวดาเนินการบอกขนาดชนิดข้อมูล 
Data คือ ชนิดข้อมูลหรือตัวแปรที่ต้องการทราบขนาด
ในบางครั้งเราก็ต้องมีการประมวลผลในระดับบิต ซึ่งเป็นหน่วย ข้อมูลที่เล็กที่สุด การทางานในระดับบิตนี้จะช่วยให้ CPU ทางาน เร็วขึ้น เพราะว่า CPU ประมวลผลที่ชนิดข้อมูลที่เป็นบิตเท่านั้น ซึ่งถ้าเป็นข้อมูลชนิดอื่นๆ จะต้องแปลงข้อมูลให้เป็นบิตก่อน 
บันทึก 
บิต (Bit) เป็นหน่วยข้อมูลที่เล็กที่สุด โดยข้อมูลหนึ่งบิตจะมี สถานะได้ 2 สถานะ คือ 0 (ปิด) หรือ 1 (เปิด) หรือเรียกอีก อย่างว่า เลขฐานสอง 
8. ตัวดาเนินการระดับบิต (Bitwse Operators)
ตารางแสดงผลการทางานของตัวดาเนินการระดับบิต โดยกาหนดให้ p และ q เป็นตัวถูกดาเนินการระหว่างบิต 
p 
q 
(BitwiseAND) 
p & q 
(BitwiseOR) 
p | q 
(BitwiseXOR) 
p ^ q 
0 
0 
0 
0 
0 
0 
1 
0 
1 
1 
1 
0 
0 
1 
1 
1 
1 
1 
1 
0 
•p & q หมายถึงให้ผลลัพธ์การเปรียบเทียบแบบ AND ระหว่าง p กับ q 
•p | q หมายถึงให้ผลลัพธ์การเปรียบเทียบแบบ OR ระหว่าง p กับ q 
•p ^ q หมายถึงให้ผลลัพธ์การเปรียบเทียบแบบ XOR ระหว่าง p กับ q
Bitwise Shift Left (<<) เป็นตัวดาเนินการสาหรับเลื่อนค่าบิต ไปทางซ้าย โดยมีหลักการทางาน ดังนี้ 
กาหนดให้X เป็นตัวถูกดาเนินการ (อยู่ในรูปแบบเลขฐานสอง) และ Y เป็นจานวนการ Shift โดยที่ X << Y หมายถึง เลื่อนบิต ในตัวถูกดาเนินการ X ไปทางซ้าย Y บิต ผลลัพธ์ที่ได้จากการ Shift Left จะได้เท่ากบผลคูณของ X กับ 2Y 
Bitwise Shift Left 
1 
1 
0 
1 
… 
1 
0 
1 
0 
1 
0 
1 
0 
… 
0 
1 
0 
0 
1 
บิตซ้ายมือสุดตัดทิ้ง 
บิตขวามือสุดเติม 0
Bitwise Shift Right (>>) เป็นตัวดาเนินการสาหรับเลื่อนค่าบิต ไปทางขวา โดยมีหลักการทางาน ดังนี้ 
กาหนดให้X เป็นตัวถูกดาเนินการ (อยู่ในรูปแบบเลขฐานสอง) และ Y เป็นจานวนการ Shift โดยที่ X >> Y หมายถึง เลื่อนบิต ในตัวถูกดาเนินการ X ไปทางขวา Y บิต ผลลัพธ์ที่ได้จากการ Shift Right จะได้เท่ากับผลหารของ X กับ 2Y 
Bitwise Shift Right 
1 
1 
0 
1 
… 
1 
0 
1 
0 
0 
0 
1 
0 
… 
0 
1 
0 
1 
บิตซ้ายมือสุดเติม 0 
บิตขวามือตัดทิ้ง 0
One’s Complement () 
One’s Complement () เป็นตัวดาเนินการสาหรับปรับค่าของบิต เป็นค่าตรงกันข้าม กล่าวคือปรบค่าบิต 1 เปลี่ยนเป็นค่าบิต 0 และ ปรับค่าบิต 0 เปลี่ยนเป็นค่าบิต 1 ซึ่งเราสามารถสรุปได้ดังตาราง ดังนี้ 
ค่าบิตเริ่มต้น(P) 
ผลจากการทา One’s Complement (P) 
1 
0 
0 
1
ลาดับความสาคัญของตัวดาเนินการ (Operator of Precedence) 
ในการทางานของตัวดาเนินการ (Operator) แต่ ละตัวนั้น ลาดับการทางานจะขึ้นอยู่กับลาดับความสาคัญ (Precedence) ของตัวดาเนินการนั้น ๆ ด้วย การทางาน จะเริ่มจากลาดับความสาคัญสูงไปยังต่า 
*จากตารางที่จะแสดงต่อไปนั้น ลาดับความสาคัญที่ 1 จะ มีความสาคัญสูงสุด และลาดับความสาคัญที่ 18 จะมี ความสาคัญต่าสุด
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่ม จาก 
(Associativity) 
1 
( ) 
วงเล็บ (Identifier) 
ไม่ได้กาหนด 
(N/A) 
2 
( ) 
ฟังก์ชัน (Function) 
ซ้ายไปขวา 
(Left) 
[ ] 
อาร์เรย์ (Array) 
Structure Selection 
Structure Member
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่มจาก 
(Associativity) 
3 
++ 
เพิ่มค่าขึ้นอีกหนึ่งค่า โดยตัว ดาเนินการอยู่หลังตัวถูก กระทา (Postfix Increment) 
ซ้ายไปขวา 
(Left) 
-- 
ลดค่าลงอีกหนึ่งค่า โดยตัว ดาเนินการอยู่หลังตัวถูก กระทา (Postfix Decrement)
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่ม จาก 
(Associativity) 
4 
++ 
เพิ่มค่าขึ้นอีกหนึ่งค่า โดยตัว ดาเนินการอยู่หน้าตัวถูก กระทา (Prefix Increment) 
ขวาไปซ้าย 
(Left) 
-- 
ลดค่าลงอีกหนึ่งค่า โดยตัว ดาเนินการอยู่หน้าตัวถูก กระทา (Prefix Decrement)
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่มจาก 
(Associativity) 
4 
(ต่อ) 
sizeof 
หาขนาดชนิดข้อมูล 
(Size of Object in byte) 
ซ้ายไปขวา 
(Left) 
+ 
บวก (plus) 
- 
ลบ (minus) 
! 
ตรรกะนิเสธ(not) 
& 
ชี้ที่อยู่ในหน่วยความจา (Address)
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่มจาก 
(Associativity) 
4 
(ต่อ) 
* 
ตัวชี้พอยเตอร์ (Indirection) 
ซ้ายไปขวา 
(Left) 
 
วันคอมพลีเมนต์ 
(One’s Complement) 
5 
( ) 
แปลงค่าชนิดข้อมูล 
6 
* 
คูณ (Multiply) 
ซ้ายไปขวา 
/ 
หาร (Divide) 
% 
หารเอาเศษ (Modulus)
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่มจาก 
(Associativity) 
7 
+ 
บวกเพิ่มค่า (Addition) 
ซ้ายไปขวา 
- 
ลบลดค่า (Subtraction) 
8 
<< 
เลื่อนบิตไปทางซ้าย 
(Bit Left) 
>> 
เลื่อนบิตไปทางขวา 
(Bit Right) 
9 
> 
เปรียบเทียบมากกว่า 
< 
เปรียบเทียบน้อยกว่า
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่มจาก 
(Associativity) 
9 
(ต่อ) 
>= 
เปรียบเทียบมากกว่าเท่ากับ 
ซ้ายไปขวา 
<= 
เปรียบเทียบน้อยกว่าเท่ากับ 
10 
== 
เปรียบเทียบเท่ากับ 
!= 
เปรียบเทียบไม่เท่ากับ 
11 
& 
การกระทาบิต AND 
(bitwise AND) 
12 
^ 
การกระทาบิต XOR 
(bitwise exclusive OR)
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่มจาก 
(Associativity) 
13 
l 
การกระทาบิต OR (bitwise OR) 
ซ้ายไปขวา 
14 
&& 
ตรรกะ AND (Logical AND) 
15 
Ll 
ตรรกะ OR (Logical OR) 
16 
? : 
เงื่อนไข (Conditional) 
ขวาไปซ้าย 
17 
= += -= 
*= /= %= 
กาหนดค่าให้ตัวถูกกระทา 
(Assignment) 
>>= <<= 
&= ^= l= 
กาหนดค่าระดับบิต 
(Bit Assignment)
ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) 
ลาดับ 
ความสาคัญ 
ตัวดาเนินการ 
ความหมาย 
การทางานเริ่มจาก 
(Associativity) 
18 
, 
คอมมา (Comma) 
ซ้ายไปขวา
ที่มา : คู่มืออบรมครูวิทยาศาสตร์ คณิตศาสตร์ คอมพิวเตอร์ โลก ดาราศาสตร์ และอวกาศ ระดับมัธยมศึกษาตอนปลาย 
หนังสือเรียนรายวิชาเพิ่มเติม การเขียนโปรแกรมเบื้องต้นด้วยภาษา C บริษทซัคเซสมีเดีย 
คู่มือเรียนเขียนโปรแกรมภาษา สานักพิมพ์ IDC PREMIER

3.4 ตัวดำเนินการและนิพจน์

  • 1.
  • 2.
    นิพจน์ (Expressions) นิพจน์(Expression) คือ ข้อความหรือประโยคที่เขียนอยู่ ในรูปสัญลักษณ์ โดยนาข้อมูล, ตัวแปร, ฟังก์ชัน หรือค่าคงที่ มา สัมพันธ์กับตัวดาเนินการ (Operator) อย่างใดอย่างหนึ่ง สิ่งที่ ควรระลึกอยู่เสมอคือในการสร้างนิพจน์ 1 นิพจน์นั้นคือ นิพจน์ จะต้องมีตัวถูกระทา (Operand) อย่างน้อยหนึ่งตัว และตัว ดาเนินการ (Operator) อย่างน้อยหนึ่งตัว
  • 3.
    นิพจน์ (Expressions) ตัวอย่างการสร้างนิพจน์โดยแสดงความสัมพันธ์ระหว่างตัวถูกกระทา ตัว ดาเนินการและนิพจน์ ดังนี้ เช่น นิพจน์ C++ C + 1 ตัวถูกกระทาตัวที่ 1 (ตัวแปร) ค่าคงที่ ตัวดาเนินการ A + B –(C + 2) ตัวดาเนินการที่ 1 ตัวถูกกระทาตัวที่ 1 (ตัวแปร) ตัวถูกกระทาตัวที่ 2 (ตัวแปร) ตัวดาเนินการที่ 2 ตัวถูกกระทาตัวที่ 3 (นิพจน์) C + 2 ตัวถูกกระทาตัวที่ 1 (ตัวแปร) ค่าคงที่ ตัวดาเนินการ
  • 4.
    ตัวดาเนินการ (Operator) ตัวดาเนินการ ตัวดาเนินการกาหนดค่า (Assignment Operators) ตัวดาเนินการทางคณิตศาสตร์ (Arithmetic Operators) ตัวดาเนินการเปรียบเทียบ (Comparison Operators) ตัวดาเนินการตรรกะ (Logical Operators) ตัวดาเนินการแบบมีเงื่อนไข (Conditional Operators) ตัวดาเนินการระดับบิต (Bitwise Operators) ตัวดาเนินการบอกขนาดชนิดของข้อมูล (Sizeof Operators) ตัวดาเนินการยูนารี (Unary Operators) ในการเขียนโปรแกรมทุกครั้งนั้นจะต้องมีการประมวลผลเข้ามาเกี่ยวข้องเสมอ แล้วสิ่งที่ทาให้เกิดการประมวลผลนั้นก็คือ ตัวดาเนินการ สามารถแบ่งออกเป็น ประเภทต่าง ๆ ได้ดังนี้
  • 5.
    1. ตัวดาเนินการกาหนดค่า (AssignmentOperator) ใช้สาหรับการกาหนดค่าให้กับตัวแปรทางด้านซ้ายของตัวดาเนินการ ในการ กาหนดค่าของตัวดาเนินการแต่ละชนิด จะมีหลักการทางานที่แตกต่างกัน ตัวดาเนินการ ความหมาย = เท่ากับ : การนาค่าตัวถูกกระทาที่ได้จากด้านขวาของตัวดาเนินการ มา ใส่ในตัวถูกกระทาทางด้านซ้ายของตัวดาเนินการ += บวกเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ ค่าตัว ถูกกระทาด้านซ้าย บวกกับ ค่าตัวถูกกระทาด้านขวาของตัวดาเนินการ -= ลบเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ ค่าตัวถูก กระทาด้านซ้าย ลบกับ ค่าตัวถูกกระทาด้านขวาของตัวดาเนินการ *= คูณเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ ค่าตัวถูก กระทาด้านซ้าย คูณกับ ค่าตัวถูกกระทาด้านขวาของตัวดาเนินการ
  • 6.
    1. ตัวดาเนินการกาหนดค่า (AssignmentOperator) (ต่อ) ตัวดาเนินการ ความหมาย /= หารเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ ค่าตัว ถูกกระทาด้านซ้าย หารกับ ค่าตัวถูกกระทาด้านขวาของตัวดาเนินการ %= หารเอาเศษเท่ากับ : การกาหนดค่าตัวถูกกระทาทางด้านซ้าย เท่ากับ เศษเหลือจากการหารระหว่างค่าตัวถูกกระทาด้านซ้ายกับค่าตัวถูก กระทาด้านขวาของตัวดาเนินการ
  • 7.
    2. ตัวดาเนินการทางคณิตศาสตร์ (ArithmeticOperators) ตัวดาเนินการทางคณิตศาสตร์ในการเขียนโปรแกรม จะมีการทางาน เหมือนกับการใช้ทางคณิตศาสตร์ทั่วไป โดยมีตัวดาเนินการต่าง ๆ ดังนี้ ตัวดาเนินการ ความหมาย ตัวอย่าง ผลลัพธ์ + การบวก (Addition) 10 + 4 14 10 + 4.0 10.0 + 4 10.0 + 4.0 14.00 ‘A’ + 2 67 - การลบ (Subtraction) 10 –4 6 10.0 –4 10 –4.0 10.0 –4.0 6.00
  • 8.
    2. ตัวดาเนินการทางคณิตศาสตร์ (ArithmeticOperators) (ต่อ) ตัวดาเนินการ ความหมาย ตัวอย่าง ผลลัพธ์ * การคูณ (Multiply) 10 * 4 40 10 * 4.0 10.0 * 4 10.0 * 4.0 40.00 10 * -4 -40 -10 * -4 40 % การหารเอาเศษ (Modulus) 11%4 3 4%10 4 -11%4 -3
  • 9.
    2. ตัวดาเนินการทางคณิตศาสตร์ (ArithmeticOperators) (ต่อ) ตัวดาเนินการ ความหมาย ตัวอย่าง ผลลัพธ์ / การหาร (Divide) 10 / 4 2 10.0 / 4 10 / 4.0 10.0 / 4.0 2.50 -11/4 -2 11/-4 -2 -11/-4 2
  • 10.
    3. ตัวดาเนินการยูนารี (UnaryOperators) ตัวดาเนินการ ความหมาย รูปแบบ ตัวอย่าง การทางาน ข้อสังเกต ++ เพิ่มค่าหนึ่งค่า ให้กับตัวแปร Postfix X =A++ X =A A =A + 1 จะกาหนดค่าให้กับตัวแปร X ก่อนเพิ่มค่าให้กับตัวแปร A Prefix X=++A A =A + 1 X =A จะเพิ่มค่าให้กับตัวแปร A ก่อนกาหนดค่าให้กับตัวแปร X -- ลดค่าลงหนึ่งค่า ให้กับตัวแปร Postfix X =A-- X =A A =A -1 จะกาหนดค่าให้กับตัวแปร X ก่อนลดค่าให้กับตัวแปร A Prefix X =--A A =A -1 X =A จะลดค่าให้กับตัวแปร A ก่อนกาหนดค่าให้กับตัวแปร X + บวก (plus) Prefix A =+2 ค่าตัวแปร A จะมีค่าเท่ากับ 2 กรณีเป็นค่าบวกจะใส่เครื่องหมาย + หรือไม่ก็ได้ เพราะกรณีไม่ใส่เครื่องหมาย คอมไพเลอร์จะมองค่านั้นเป็นบวกเสมอ - ลบ (minus) Prefix A =-2 ค่าตัวแปร A จะมีค่าเท่า -2 เครื่องหมายลบหน้าตัวเลขแสดงถึงค่าเป็น จานวนลบ A =-2 A =-A A =-2 A =2 เมื่อใส่เครื่องหมายลบหน้าตัวแปรใด ๆ ผลลัพธ์ที่ได้จะเป็นค่าตรงกันข้าม
  • 11.
    4. ตัวดาเนินการเปรียบเทียบ (ComparisionOperators) เป็นตัวดาเนินการสาหรับเปรียบเทียบข้อมูลระหว่างตัวถูกกระทาทางด้านซ้ายและ ด้านขวา ผลลัพธ์ที่ได้จะมีค่าเป็นจริง (True) หรือเท็จ (False) เท่านั้น ตัวดาเนินการ ความหมาย ตัวอย่าง = = เท่ากับ : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายกับ ด้านขวาของตัวดาเนินการ ว่ามีค่าเท่ากันหรือไม่ ถ้าเท่ากันจะ ให้ผลลัพธ์เป็นจริง ถ้าไม่เท่ากันจะให้ผลลัพธ์เป็นเท็จ A = =B != ไม่เท่ากับ : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายกับ ด้านขวาของตัวดาเนินการ ว่ามีค่าไม่เท่ากันหรือไม่ ถ้าไม่ เท่ากันจะให้ผลลัพธ์เป็นจริง ถ้าเท่ากันจะให้ผลลัพธ์เป็นเท็จ A !=B > มากกว่า : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายมีค่า มากกว่าตัวถูกกระทาด้านขวาของตัวดาเนินการหรือไม่ ถ้า มากกว่าจะให้ผลลัพธ์เป็นจริง ถ้าน้อยกว่าจะให้ผลลัพธ์เป็นเท็จ A > B
  • 12.
    4. ตัวดาเนินการเปรียบเทียบ (ComparisionOperators) (ต่อ) ตัวดาเนินการ ความหมาย ตัวอย่าง >= มากกว่าหรือเท่ากับ : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายมีค่า มากกว่าหรือเท่ากับตัวถูกกระทาด้านขวาของตัวดาเนินการ ถ้า มากกว่าหรือเท่ากับจะให้ผลลัพธ์เป็นจริง ถ้าไม่ใช่จะให้ผลลัพธ์เป็นเท็จ A >= B < น้อยกว่า : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายมีค่าน้อยกว่าตัว ถูกกระทาด้านขวาของตัวดาเนินการหรือไม่ ถ้าน้อยกว่าจะให้ผลลัพธ์ เป็นจริง ถ้ามากกว่าจะให้ผลลัพธ์เป็นเท็จ A < B <= น้อยกว่าหรือเท่ากับ : เปรียบเทียบระหว่างตัวถูกกระทาด้านซ้ายมีค่า น้อยกว่าหรือเท่ากับตัวถูกกระทาด้านขวาของตัวดาเนินการ ถ้าน้อย กว่าหรือเท่ากับจะให้ผลลัพธ์เป็นจริง ถ้าไม่ใช่จะให้ผลลัพธ์เป็นเท็จ A <= B
  • 13.
    5. ตัวดาเนินการตรรกะ (LogialOperators) ตัวดาเนินการตรรกะ (Logial Operators) เป็นตัวดาเนินการทางด้าน ตรรกศาสตร์ ใช้สาหรับกาหนดเงื่อนไขมากกว่า 1 เงื่อนไข ซึ่งผลลัพธ์ที่ได้จะมีค่า เป็นจริง(True) หรือ เท็จ(False) เท่านั้น ตัวดาเนินการ ความหมาย ตัวอย่าง && และ : ใช้กาหนดเงื่อนไขในกรณีที่ต้องการให้เงื่อนไข ของนิพจน์ด้านซ้ายและด้านขวาของตัวดาเนินเป็นจริง ทั้งสองด้าน จึงทางานที่ต้องการ (A>B) && A>C) || หรือ : ใช้กาหนดเงื่อนไขในกรณีที่ต้องการให้เงื่อนไข ของนิพจน์และด้านขวาของตัวดาเนินการเป็นจริงด้าน ใดด้านหนึ่งหรือทั้งสองด้าน จึงทางานที่ต้องการ (A>B) || (A>C) ! นิเสธ (not) : ใช้กาหนดเงื่อนไขในกรณีที่ต้องการค่า ความจริงตรงกันข้าม !(A < B)
  • 14.
    p q p&& q p || q !p !q จริง จริง จริง จริง เท็จ เท็จ จริง เท็จ เท็จ จริง เท็จ จริง เท็จ จริง เท็จ จริง จริง เท็จ เท็จ เท็จ เท็จ เท็จ จริง จริง ตารางเปรียบเทียบค่าความจริงของนิพจน์ โดยกาหนดให้ p และ q เป็นตัวถูก ดาเนินการทางตรรกศาสตร์
  • 15.
    ตัวดาเนินการชนิดนี้ใช้สาหรับตรวจสอบเงื่อนไขของนิพจน์ ว่า มีความจริงเป็นจริง(True) หรือเท็จ (False)โดยมีรูปแบบการ ใช้งานดังนี้ โดยที่Expression คือ นิพจน์เงื่อนไข ValueTrue คือ ค่าที่ได้กรณีที่เงื่อนไขเป็นจริง ValueFalse คือ ค่าที่ได้กรณีเงื่อนไขเป็นเท็จ 6. ตัวดาเนินการแบบมีเงื่อนไข (Condition Operators) Expression ? ValueTrue: ValueFalse;
  • 16.
    ตัวดาเนินการชนิดนี้จะใช้สาหรับหาขนาดชนิดของข้อมูลต่าง ๆ ที่ต้องการรู้ โดยมีรูปแบบการใช้งานดังนี้ 7. ตัวดาเนินการบอกขนาดชนิดข้อมูล (Sizeof Operators) sizeof(Data) โดยที่sizeof คือ ตัวดาเนินการบอกขนาดชนิดข้อมูล Data คือ ชนิดข้อมูลหรือตัวแปรที่ต้องการทราบขนาด
  • 17.
    ในบางครั้งเราก็ต้องมีการประมวลผลในระดับบิต ซึ่งเป็นหน่วย ข้อมูลที่เล็กที่สุดการทางานในระดับบิตนี้จะช่วยให้ CPU ทางาน เร็วขึ้น เพราะว่า CPU ประมวลผลที่ชนิดข้อมูลที่เป็นบิตเท่านั้น ซึ่งถ้าเป็นข้อมูลชนิดอื่นๆ จะต้องแปลงข้อมูลให้เป็นบิตก่อน บันทึก บิต (Bit) เป็นหน่วยข้อมูลที่เล็กที่สุด โดยข้อมูลหนึ่งบิตจะมี สถานะได้ 2 สถานะ คือ 0 (ปิด) หรือ 1 (เปิด) หรือเรียกอีก อย่างว่า เลขฐานสอง 8. ตัวดาเนินการระดับบิต (Bitwse Operators)
  • 18.
    ตารางแสดงผลการทางานของตัวดาเนินการระดับบิต โดยกาหนดให้ pและ q เป็นตัวถูกดาเนินการระหว่างบิต p q (BitwiseAND) p & q (BitwiseOR) p | q (BitwiseXOR) p ^ q 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 •p & q หมายถึงให้ผลลัพธ์การเปรียบเทียบแบบ AND ระหว่าง p กับ q •p | q หมายถึงให้ผลลัพธ์การเปรียบเทียบแบบ OR ระหว่าง p กับ q •p ^ q หมายถึงให้ผลลัพธ์การเปรียบเทียบแบบ XOR ระหว่าง p กับ q
  • 19.
    Bitwise Shift Left(<<) เป็นตัวดาเนินการสาหรับเลื่อนค่าบิต ไปทางซ้าย โดยมีหลักการทางาน ดังนี้ กาหนดให้X เป็นตัวถูกดาเนินการ (อยู่ในรูปแบบเลขฐานสอง) และ Y เป็นจานวนการ Shift โดยที่ X << Y หมายถึง เลื่อนบิต ในตัวถูกดาเนินการ X ไปทางซ้าย Y บิต ผลลัพธ์ที่ได้จากการ Shift Left จะได้เท่ากบผลคูณของ X กับ 2Y Bitwise Shift Left 1 1 0 1 … 1 0 1 0 1 0 1 0 … 0 1 0 0 1 บิตซ้ายมือสุดตัดทิ้ง บิตขวามือสุดเติม 0
  • 20.
    Bitwise Shift Right(>>) เป็นตัวดาเนินการสาหรับเลื่อนค่าบิต ไปทางขวา โดยมีหลักการทางาน ดังนี้ กาหนดให้X เป็นตัวถูกดาเนินการ (อยู่ในรูปแบบเลขฐานสอง) และ Y เป็นจานวนการ Shift โดยที่ X >> Y หมายถึง เลื่อนบิต ในตัวถูกดาเนินการ X ไปทางขวา Y บิต ผลลัพธ์ที่ได้จากการ Shift Right จะได้เท่ากับผลหารของ X กับ 2Y Bitwise Shift Right 1 1 0 1 … 1 0 1 0 0 0 1 0 … 0 1 0 1 บิตซ้ายมือสุดเติม 0 บิตขวามือตัดทิ้ง 0
  • 21.
    One’s Complement () One’s Complement () เป็นตัวดาเนินการสาหรับปรับค่าของบิต เป็นค่าตรงกันข้าม กล่าวคือปรบค่าบิต 1 เปลี่ยนเป็นค่าบิต 0 และ ปรับค่าบิต 0 เปลี่ยนเป็นค่าบิต 1 ซึ่งเราสามารถสรุปได้ดังตาราง ดังนี้ ค่าบิตเริ่มต้น(P) ผลจากการทา One’s Complement (P) 1 0 0 1
  • 22.
    ลาดับความสาคัญของตัวดาเนินการ (Operator ofPrecedence) ในการทางานของตัวดาเนินการ (Operator) แต่ ละตัวนั้น ลาดับการทางานจะขึ้นอยู่กับลาดับความสาคัญ (Precedence) ของตัวดาเนินการนั้น ๆ ด้วย การทางาน จะเริ่มจากลาดับความสาคัญสูงไปยังต่า *จากตารางที่จะแสดงต่อไปนั้น ลาดับความสาคัญที่ 1 จะ มีความสาคัญสูงสุด และลาดับความสาคัญที่ 18 จะมี ความสาคัญต่าสุด
  • 23.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่ม จาก (Associativity) 1 ( ) วงเล็บ (Identifier) ไม่ได้กาหนด (N/A) 2 ( ) ฟังก์ชัน (Function) ซ้ายไปขวา (Left) [ ] อาร์เรย์ (Array) Structure Selection Structure Member
  • 24.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่มจาก (Associativity) 3 ++ เพิ่มค่าขึ้นอีกหนึ่งค่า โดยตัว ดาเนินการอยู่หลังตัวถูก กระทา (Postfix Increment) ซ้ายไปขวา (Left) -- ลดค่าลงอีกหนึ่งค่า โดยตัว ดาเนินการอยู่หลังตัวถูก กระทา (Postfix Decrement)
  • 25.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่ม จาก (Associativity) 4 ++ เพิ่มค่าขึ้นอีกหนึ่งค่า โดยตัว ดาเนินการอยู่หน้าตัวถูก กระทา (Prefix Increment) ขวาไปซ้าย (Left) -- ลดค่าลงอีกหนึ่งค่า โดยตัว ดาเนินการอยู่หน้าตัวถูก กระทา (Prefix Decrement)
  • 26.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่มจาก (Associativity) 4 (ต่อ) sizeof หาขนาดชนิดข้อมูล (Size of Object in byte) ซ้ายไปขวา (Left) + บวก (plus) - ลบ (minus) ! ตรรกะนิเสธ(not) & ชี้ที่อยู่ในหน่วยความจา (Address)
  • 27.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่มจาก (Associativity) 4 (ต่อ) * ตัวชี้พอยเตอร์ (Indirection) ซ้ายไปขวา (Left)  วันคอมพลีเมนต์ (One’s Complement) 5 ( ) แปลงค่าชนิดข้อมูล 6 * คูณ (Multiply) ซ้ายไปขวา / หาร (Divide) % หารเอาเศษ (Modulus)
  • 28.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่มจาก (Associativity) 7 + บวกเพิ่มค่า (Addition) ซ้ายไปขวา - ลบลดค่า (Subtraction) 8 << เลื่อนบิตไปทางซ้าย (Bit Left) >> เลื่อนบิตไปทางขวา (Bit Right) 9 > เปรียบเทียบมากกว่า < เปรียบเทียบน้อยกว่า
  • 29.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่มจาก (Associativity) 9 (ต่อ) >= เปรียบเทียบมากกว่าเท่ากับ ซ้ายไปขวา <= เปรียบเทียบน้อยกว่าเท่ากับ 10 == เปรียบเทียบเท่ากับ != เปรียบเทียบไม่เท่ากับ 11 & การกระทาบิต AND (bitwise AND) 12 ^ การกระทาบิต XOR (bitwise exclusive OR)
  • 30.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่มจาก (Associativity) 13 l การกระทาบิต OR (bitwise OR) ซ้ายไปขวา 14 && ตรรกะ AND (Logical AND) 15 Ll ตรรกะ OR (Logical OR) 16 ? : เงื่อนไข (Conditional) ขวาไปซ้าย 17 = += -= *= /= %= กาหนดค่าให้ตัวถูกกระทา (Assignment) >>= <<= &= ^= l= กาหนดค่าระดับบิต (Bit Assignment)
  • 31.
    ตารางแสดงลาดับความสาคัญของตัวดาเนินการ (ต่อ) ลาดับ ความสาคัญ ตัวดาเนินการ ความหมาย การทางานเริ่มจาก (Associativity) 18 , คอมมา (Comma) ซ้ายไปขวา
  • 32.
    ที่มา : คู่มืออบรมครูวิทยาศาสตร์คณิตศาสตร์ คอมพิวเตอร์ โลก ดาราศาสตร์ และอวกาศ ระดับมัธยมศึกษาตอนปลาย หนังสือเรียนรายวิชาเพิ่มเติม การเขียนโปรแกรมเบื้องต้นด้วยภาษา C บริษทซัคเซสมีเดีย คู่มือเรียนเขียนโปรแกรมภาษา สานักพิมพ์ IDC PREMIER