2.7 ลำดับการทำงานของตัวดำเนินการ (precedence  and  associativity   of  operators)
ตารางที่ 2.9 แสดงลำดับการทำงานของตัวดำเนินการในภาษา C มีดังนี้
| 
ลำดับที่ | 
ตัวดำเนินการ   (Operator) | 
ลักษณะการทำงาน    (Associativity) | 
| 
1 | ( ) [ ] . -> | 
Left  to     right | 
| 
2 | - ~ ! * & | 
Light  to     left | 
| 
3 | ++ - - | 
Right  to     left | 
| 
4 | * / % | 
Left  to     right | 
| 
5 | + - | 
Left  to     right | 
| 
6 | << >> | 
Left  to     right | 
| 
7 | < > < = >= | 
Left  to     right | 
| 
8 | = = != | 
Left  to     right | 
| 
9 | & (bitwise AND) | 
Left  to     right | 
| 
10 | ^ (bitwise exclu OR) | 
Left  to     right | 
| 
11 | | (bitwise inclu OR) | 
Left  to     right | 
| 
12 | && | 
Left  to     right | 
| 
13 | || | 
Left  to     right | 
| 
14 | ?: | 
Left  to     right | 
| 
15 | = += -= /= %= | 
Right  to     left | 
| 
16 | <<= >>= | 
Right  to     left | 
ตัวดำเนินการที่มีลำดับการทำงานอันดับที่ 1 จะทำงานก่อนอันดับที่ 2 โดยทำงานไปเรื่อย ๆ จนกระทั่งหมดตัวดำเนินการ ส่วนลักษณะการทำงานของตัวดำเนินการแต่ละอันดับนั้นแตกต่างกันไป ซึ่งจะเป็นการทำงานจากซ้ายไปขวา (left to rigth) หรือขวาไปซ้าย (rigth to left) ก็ได้
ตัวอย่างที่ 2.5 แสดงขั้นตอนการทำงานของตัวดำเนินการ
| 8 + 5 * 3 4 +15 19 | ตัวดำเนินการ * อยู่ลำดับสูงกว่าตัวดำเนินการ + จึงต้องคูณเลขก่อนแล้วทำการบวกเลขทีหลัง | 
| 10 / 2 + 5 – 3 5 + 5 – 3 10 - 3 7 | ตัวดำเนินการ / อยู่ลำดับสูงกว่าตัวดำเนินการ + และ - ส่วนตัวดำเนินการ + และ - อยู่ลำดับเดียวกัน แต่ให้ทำจากซ้ายไปขวา จึงทำบวกก่อนแล้วจึงทำลบ | 
| 9 * 3 - 20 / 5 + 6 27 - 4 + 6 23 + 6 29 | ตัวดำเนินการ * และ / อยู่ลำดับเดียวกันให้ทำจากซ้ายไปขวา คือ คูณเลขก่อน แล้วหารเลข ส่วนตัวดำเนินการ - และ + อยู่ลำดับเดียวกันให้ทำจากซ้ายไปขวา คือ ลบเลขก่อนแล้วจึงบวกทีหลัง | 
 
ไม่มีความคิดเห็น:
แสดงความคิดเห็น