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