ตาราง แสดงลำดับการทำงานของตัวดำเนินการในภาษา 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
|
ที่มา : Gottfried, S. Byron, 1990 : 475.
ตัวดำเนินการที่มีลำดับการทำงานอันดับที่ 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 | ตัวดำเนินการ * และ / อยู่ลำดับเดียวกันให้ทำจากซ้ายไปขวา คือ คูณเลขก่อน แล้วหารเลข ส่วนตัวดำเนินการ - และ + อยู่ลำดับเดียวกันให้ทำจากซ้ายไปขวา คือ ลบเลขก่อนแล้วจึงบวกทีหลัง |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น