วันพุธที่ 17 กันยายน พ.ศ. 2557

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

0 ความคิดเห็น:

แสดงความคิดเห็น