จาก ตัวดำเนินการ ภาษา c ในบททีแล้วครั้งนี้ผมจะมาพูดถึงเรื่องลำดับความสำคัญของการทำงาน เจ้า โอเปอเรเตอร์นะครับ เพราะเจ้า โอเปอร์เรเตอร์นี้มันก็เลือกนะครับว่ามันจะเริ่มทำงานจากตัวใหนก่อน เมื่ออยู่ในบรรทัดเดียวกันเช่น 3+8*12/2-6=?อะไรยังงี้ คุณลองคิดดุซิว่ามันจะ ได้ผลลัพธ์เป็นเท่าไร อะๆๆๆๆ ท่าคิดได้ว่าเป็น 60 ก็ถือว่าคุณ…. คิดผิดแล้วครับ คำตอบมันก็คือ 45 ครับ ถ้าใครคิด 45 ก็แปลว่าท่านนั้นต้องเป็นนักเขียนโปรแกรมแล้วละครับ เพราะบทนี้ก็ยังอยู่ในขึ้นต้น ทำไมผมถึงให้ความสำคัญในขั้นต้นมาก เพราะ ท่าพื้นดี เราก็จะได้ไม่ลื่อไงครับ ท่าไม่แน่เดียวน็อคได้นะครับ ก็เลยต้องสำคัญหน่อย เอาละเราต่อเริ่มต่อจากบท ตัวดำเนินการ ภาษา c ที่แล้วกันเลยนะครับ
เนื่องจากโอเปอเรเตอร์มีอยู่กันหลายชนิดดังนั้นภาษาซีจึงได้กำหนดลำดับความสำคัญของการทำงานของ โอเปอเรเตอร์(Operator) ขึ้นดังกล่าวต่อไปนี้นี้
ตารางลำดับความสำคัญของOperator
ลำดับความสำคัญจากมากสุดไปน้อยสุด | โอเปอเรเตอร์ |
( ) | |
++, -- | |
-(เครื่องหมายลบอยู่หน้าตัวเลข) | |
*, / , % | |
+ , - |
การทำงานของโอเปอเรเตอร์นั้นให้เริ่มต้นจากโอเปอเรเตอร์ที่มีความสำคัญมากสุดก่อน กล่าวคือ จะทำโอเปอเรเตอร์ที่มีความสำคัญสูงสุดไล่ไปยังโอเปอร์เรเตอร์ต่ำสุดแต่หากพบโอเปอเรเตอร์ที่มีความสำคัญเท่ากัน มันก็จะทำจากด้านซ้ายไปขวานะครับ
เอาเป็นว่าเรามาดูตัวอย่างการทำงานของมันเลยดีกว่าครับ
C Language Operator Ex1 จงหานิพจน์ 8+5*10
วิธีทำ
1.สังเกตที่ตัวโอเปอเรเตอร์ก่อนเสมอว่ามีโอเปอเรเตอร์อะไรบ้าง ในที่นี้มีโอเปอเรเตอร์+ และ*
2.ทำการไล่ลำดับความสำคัญของโอเปอเรเตอร์ทั้งหมดโดยเปรียบเทียบโอเปอเรเตอร์ว่าตัวใหนมีความสัญคัญมากที่สุดแล้วก็จึงทำตัวนั้นก่อนและก็ไล่ทำไปจนถึงโอเปอเรเตอร์ตัวสำคัญท้ายสุด
ลำดับความสำคัญจากมากสุดไปน้อยสุด | โอเปอเรเตอร์ |
* | |
+ |
3.จากข้อ 2. เราจะวิเคราะห์ได้ตามนี้ เราก็จะทำ 5*10 ก่อนผลที่ได้ ก็ค่อยนำไปบอกกับ8 ก็จะเป็น 50+8 ผล ของนิพจน์ตัวนี้ จะ เท่ากับ 58 ครับ
ตัวอย่างต่อไปนี้ผมจะนำเอาโอเปอเรเตอร์ ที่สำคัญเท่ากันกันมากกระทำในนิพจน์เดียวกันนะครับ เรามาดูว่าการทำงานของมันจะมีค่าเท่าได้
C Language Operator Ex2 จงหานิพจน์ 1 * 8 / 8 * 6 % 4 มีค่าเท่าใด
วิธีทำ ก็คล้ายๆตัวอย่างที่หนึ่ง แต่ลำดับความสำคัญเจ้า C Language Operator Ex2 นี้มันมีโอเปอเรเตอร์ที่มีลำดับความสำคัญเท่ากัน เพราะฉนั้นก็ง่ายครับ เพราะท่ามันเป็นแบบนี้มันจะดำเนินการจาก ซ้าย ไป ขาว ก็คือ 1*8= 8 แล้วนำ 8 ไปกำทำกับ โอเปอเรเตอร์ตัวต่อไป จนถึงขาวสุด เราก็จะได้คำตอบ ออกมา เห็นภาพกันมัยครับ ท่าไม่งันเดียวผมจะทำให้ดูนะครับ
ขั้นที่1 1 * 8 = 8
ขั้นที่2 ค่าที่ได้จากขั้นที่ 1 นำมา / 8
= 8 / 8 = 1
ขั้นที่3 ค่าที่ได้จากขั้นที่ 2 นำมา * 6
= 1 * 6 = 6
ขั้นที่4 ค่าที่ได้จากขั้นที่ 3 นำมา % 4
= 6%4 = 2 (เพราะเอาเศษจากการหาร)
สรุป เพราะฉนั้น ตัวอย่าง C Language Operator Ex2 ข้อนี้จึงมีค่าท่ากับ
1 * 8 / 8 * 6 % 4 = 2 ครับ ท่าเป็นตัวแปรก็ทำเช่นเดียวกันนะครับ
เอาละผมก็ขอจบเรื่องนี้แค่นี้ก่อนแล้วเราค่อยมาต่อกันที่ Operator and Operations3 ในเรื่อง การแปลงชนิดข้อมูล ต่อกันนะครับ ในบทความนี้ผู้เขียนหวังว่าจะช่วยผู่อ่านได้ไม่มากก็น้อยในเรื่อง ลำดับความสำคัญ โอเปอเรเตอร์ นะครับ หวัดดีครับ
0 ความคิดเห็น:
แสดงความคิดเห็น