:

[วีดีโอสำหรับย้อนกลับมาดูคำอธิบาย]
  

Operator Precedence 

คือ ลำดับการทำงานของตัวดำเนินการคำนวณ
โค๊ด 023Operator1int x = 3 + 4 * 2;
printf("%d", x);

ผลลัพธ์11


3 + 4 * 2 บางคนอาจสงสัยว่า ทำไมไม่เท่ากับ 14 !!
นั่นเป็นเพราะว่าคอมพิวเตอร์จะทำการคูณ และหาร ก่อนบวกลบเสมอ
เช่น 3 + 4 * 2 คอมพิวเตอร์จะทำ 4 * 2 ก่อน มีค่าเท่ากับ 8 แล้วค่อยทำ 3 + 8 จึงได้ 11 นั่นเอง

ถ้าอยากให้คอมพิวเตอร์ ทำการบวก ก่อนการคูณ ให้ใส่เครื่องหมายวงเล็บ  (  )  ครอบไว้ ดังนี้

โค๊ด 024Operator2int x = ( 3 + 4 ) * 2;
printf("%d", x);

ผลลัพธ์14



คอมพิวเตอร์จะทำการประมวลผลเรียงลำดับดังนี้
1. ( )                คอมพิวเตอร์จะทำการคำนวณในวงเล็บก่อนเสมอ
2. *  /  %         จากนั้นจะทำการคูณ หาร มอดูลัส  เรียงจากซ้ายไปขวา เจอเครื่องหมายใดก่อน ทำก่อน
3. + -               และทำการบวก ลบ เรียงจากซ้ายไปขวาเช่นกัน

ลองมาดูอีกซักตัวอย่าง

โค๊ด 025Operator3int x = 1 + 5 % ( 8 - 4 / 2  * 3 ) * 4;
printf("%d", x);


ผลลัพธ์5


เห็นเยอะๆ อย่าเพิ่งตกใจไป ก่อนอื่นขั้นแรกให้หยิบวงเล็บมาทำก่อนเลย
1 + 5 % ( 8 - 4 / 2  * 3 ) * 4
ในวงเล็บให้ทำเครื่องหมาย * / % เจอเครื่องหมายใดก่อน ทำก่อน จากซ้ายไปขวา
ในที่นี้เราเจอ - ก่อนอับดับแรก จะยังไม่ทำข้ามไปก่อน จากนั้นเจอ / ทำเลย 4 / 2 = 2 แทนค่ากลับไปได้
1 + 5 % ( 8 - 2  * 3 ) * 4
จากนั้นเจอ * ทำเลย 2 * 3 = 6 แทนค่ากลับไปได้
1 + 5 % ( 8 - 6 ) * 4
ตอนนี้ยังอยู่ในวงเล็บอยู่ เสร็จจากการทำ * / % แล้ว ค่อยมาทำ + -
ก็จะได้ 8 - 6 = 2 แทนค่ากลับไปได้
1 + 5 % 2 * 4              ในวงเล็บเหลือค่าเดียวแล้ว ถอดวงเล็บออกได้
เมื่อเสร็จจากการทำในวงเล็บแล้ว ต่อไปก็คือทำ * / % 
ไ่ล่จากซ้ายไปขวา เจอ + ยังไม่ทำเก็บไว้ก่อน เจอ % ทำเลย 5 % 2 = 1 แทนค่ากลับไปได้
1 + 1 * 4
จากนั้นทำ * ก่อนได้ 1 * 4 = 4 แทนค่ากลับไปได้
1 + 4
สุดท้ายจึงทำการบวกได้ 1 + 4 = 5
5
เป็นอันเสร็จสิ้น


Refer: Link