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