![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
ตัวดำเนินการ | ความหมาย |
+ | บวก |
การสร้างนิพจน์ทางคณิตศาสตร์ ถ้าเป็นนิพจน์ที่มีตัวถูกดำเนินการเพียง 2 ตัวจะไม่มีปัญหาอะไร แต่ถ้าเกิดมีตัวถูกดำเนินการมากกว่า 2 ตัวขึ้นไป ผู้ใช้จะต้องคำนึงถึงลำดับความสำคัญของตัวดำเนินการด้วย มิฉะนั้นอาจจะได้ผลลัพธ์ที่ไม่ตรงตามความต้องการได้
ตัวอย่าง
ผู้ใช้ต้องการให้เอา 2 บวกกับ 3 แล้วนำไปคูณด้วย 5 ซึ่งคำตอบที่ผู้ใช้ต้องการ คือ 25 แต่ถ้าผู้ใช้เขียนนิพจน์เป็น
2 + 3 * 5
ผลลัพธ์ที่ได้จะเท่ากับ 17 เพราะภาษา C จะคิดตามลำดับความสำคัญของตัวดำเนินการ (Precedence) ดังนี้ เอา 3 คูณกับ 5 ได้ 15 แล้วนำไปบวกกับ 2 ได้ 17 ซึ่งเป็นคำตอบที่ไม่ตรงตามความต้องการ เพราะฉะนั้นผู้ใช้จึงต้องระวังเรื่องนี้อย่างมาก วิธีการแก้ไขก็สามารถทำได้โดยการใช้วงเล็บเข้ามาช่วย ซึ่งวงเล็บจะมีลำดับความสำคัญสูงที่สุด และเมื่อลำดับความสำคัญเท่ากัน ให้ดูในตารางโดยเรียงจากซ้ายไปขวา ซึ่งถ้ามีหลายวงเล็บซ้อนกัน ภาษา C จะคิดจากวงเล็บในออกมา ดังนั้นถ้าตัวอย่างด้านบนจะเขียนนิพจน์ให้ได้ผลลัพธ์ตามต้องการ จะต้องเขียนดังนี้
(2 + 3) * 5
ผลลัพธ์ที่ได้จะเป็น 2 บวกกับ 3 ได้ 5 แล้วคูณด้วย 5 จะเท่ากับ 25
ตารางที่ 4.2 ลำดับความสำคัญของตัวดำเนินการทางคณิตศาสตร์ (ยิ่งมากยิ่งสำคัญ)
ตัวดำเนินการ | ลำดับความสำคัญ |
++,-- | 16 |
- (เครื่องหมายลบหน้าตัวเลข) | 15 |
*, /, % | 13 |
+, - | 12 |
ตัวอย่างนิพจน์ และวิธีการคำนวณ
นิพจน์ | วิธีการคำนวณ |
10 / 2 * 3 | เอา 10 หาร 2 ได้ 5 แล้วคูณด้วย 3 จะได้ผลลัพธ์ 15 |
((5 + 3) * (9 - 2)) + 3 | เอา 5 บวก 3 ได้ 8 แล้วเอา 9 ลบ ได้ 7 แล้วนำ 5 บวก 7 ได้ 12 แล้วนำ 12 มาบวก 3 จะได้ผลลัพธ์ 15 |
12 * 2 + (2 * 6) | เอา 2 คูณ 6 ได้ 12 แล้วนำ 12 มาคูณ 2 ได้ 24 จากนั้นนำ 24 มาบวก 12 จะได้ผลลัพธ์ 36 |
โปรแกรมที่ 4-1 แสดงผลของตัวดำเนินการต่าง ๆ
ตัวดำเนินการในการกำหนดค่า
ตัวดำเนินการที่ใช้ในการกำหนดค่านั้นจะเป็นเครื่องหมาย = การทำงานของตัวดำเนินการนี้จะทำการนำค่าที่อยู่ทางด้านขวาของตัวดำเนินการไปเก็บไว้ในตัวแปรทางด้านซ้ายของตัวดำเนินการสิ่งที่อยู่ด้านขวาของตัวดำเนินการนั้นอาจจะเป็นนิพจน์ทางคณิตศาสตร์ หรือจะเป็นตัวแปรก็ได้
รูปแบบ
[ตัวแปร] = [นิพจน์]
Simple Assignments (การกำหนดค่าแบบง่าย)
Simple Assignments จะมีรูปแบบเหมือนกับรูปแบบด้านบน หรือเหมือนกับสมการทางคณิตศาสตร์ทั่วไป
ตัวอย่าง
A = 2
Sum = 2 + A
Sum = (2 * 5) + 6
ตัวอย่าง Simple Assignments
ค่าของ x | ค่าของ y | นิพจน์ | ค่าของนิพจน์ | ผลลัพธ์ของนิพจน์ |
10 | 5 | x=y +2 | 7 | x=7 |
10 | 5 | x=x /y | 2 | x=2 |
10 | 5 | x=y % 4 | 1 | x=1 |
โปรแกรม 4-2 การกำหนดให้กับตัวแปรในลักษณะต่าง ๆ
Compound Assignments (การกำหนดค่าแบบผสม)
Compound Assignment เป็นการกำหนดที่สั้นกว่าแบบ Simple Assignment ซึ่งจะใช้ตัวดำเนินการ 5 ตัวด้วยกัน ดังนี้ *=, /=, %=, += และ-=
ตารางที่ 4-3 ความหมายของตัวดำเนินการ
นิพจน์แบบ Compound | เทียบเท่ากับนิพจน์แบบ Simple |
x * = y | x = x* y |
X / = y | X = x/y |
X % = y | X =x %y |
X + = y | X = x+y |
X - =y | X =x-y |
ตัวอย่าง Simple Assignments
ค่าของ x | ค่าของ y | นิพจน์ | ค่าของนิพจน์ | ผลลัพธ์ของนิพจน์ |
10 | 5 | x * = y | 50 | X = 50 |
10 | 5 | X / = t | 2 | X = 2 |
10 | 5 | X % = y | 0 | X = 0 |
10 | 5 | X + = y | 15 | X = 15 |
10 | 5 | X - = y | 5 | X = 5 |
โปรแกรม 4.3 ผลของตัวดำเนินการแบบผสม
ตัวดำเนินการ ++ และ --
ตัวดำเนินการ ++ จะทำการเพิ่มค่าของตัวแปรอีก 1 ส่วน -- นั้นจะทำการลดค่าของตัวแปรลง 1 ซึ่งการสร้างนิพจน์ด้วยตัวดำเนินการ 2 ตัวนี้ จะมี 2 แบบ คือ
แบบ Postfix
รูปแบบ
[ตัวแปร] [ตัวดำเนินการ]
ตัวอย่าง
A ++
A ?
ขั้นตอนการทำงานของนิพจน์แบบ Postfix เมื่อนิพจน์ x = a++
1. ให้ x = a
2. จากนั้นจะทำการ a = a + 1
หรือ เมื่อนิพจน์เป็น y = b-- จะมีขั้นตอนการทำการ ดังนี้
1. ให้ y = b
2. จากนั้นจะทำการ b = b ? 1
ค่าของ a ตอนแรก | นิพจน์ | ผลลัพธ์ของนิพจน์ | ค่าของ a ตอนหลัง |
10 | a++ | 10 | 11 |
10 | a-- | 10 | 9 |
โปรแกรม 4-4 แสดงผลของตัวดำเนินการ ++ ในแบบ Postfix
/imgs/clip_image004_0003.gif
แบบ Prefix
รูปแบบ
[ตัวดำเนินการ] [ตัวแปร]
ตัวอย่าง
++a
--a
ขั้นตอนการทำงานของนิพจน์แบบ Prefix เมื่อนิพจน์ x = ++a
1. จากนั้นจะทำการ a = a + 1
2. ให้ x = a
หรือ เมื่อนิพจน์เป็น y = --b จะมีขั้นตอนการทำการ ดังนี้
1. จากนั้นจะทำการ b = b-1
2. ให้ y = b
ค่าของ a ตอนแรก | นิพจน์ | ผลลัพธ์ของนิพจน์ | ค่าของ a ตอนหลัง |
10 | ++a | 11 | 11 |
10 | --a | 9 | 9 |
โปรแกรม 4-5 แสดงผลของตัวดำเนินการ ++ ในแบบ Prefix