Pascal - ตัวดำเนินการ
ตัวดำเนินการคือสัญลักษณ์ที่บอกให้คอมไพเลอร์ดำเนินการจัดการทางคณิตศาสตร์หรือตรรกะเฉพาะ Pascal อนุญาตให้ใช้ตัวดำเนินการประเภทต่อไปนี้ -
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเชิงสัมพันธ์
- ตัวดำเนินการบูลีน
- ตัวดำเนินการบิต
- ตั้งค่าตัวดำเนินการ
- ตัวดำเนินการสตริง
ให้เราพิจารณาตัวดำเนินการทางคณิตศาสตร์เชิงสัมพันธ์บูลีนและบิตทีละตัว เราจะพูดถึงตัวดำเนินการชุดและการทำงานของสตริงในภายหลัง
ตัวดำเนินการเลขคณิต
ตารางต่อไปนี้แสดงตัวดำเนินการเลขคณิตทั้งหมดที่ปาสคาลรองรับ สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20 แล้ว -
แสดงตัวอย่าง
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| + | เพิ่มสองตัวถูกดำเนินการ | A + B จะให้ 30 |
| - | ลบตัวถูกดำเนินการที่สองจากตัวแรก | A - B จะให้ -10 |
| * | คูณตัวถูกดำเนินการทั้งสอง | A * B จะให้ 200 |
| / | หารตัวเศษด้วยตัวส่วน | B / A จะให้ 2 |
| % | ตัวดำเนินการโมดูลัสและส่วนที่เหลือหลังจากการหารจำนวนเต็ม | B% A จะให้ 0 |
ตัวดำเนินการเชิงสัมพันธ์
ตารางต่อไปนี้แสดงตัวดำเนินการเชิงสัมพันธ์ทั้งหมดที่สนับสนุนโดย Pascal สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20 แล้ว -
แสดงตัวอย่าง
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| = | ตรวจสอบว่าค่าของตัวถูกดำเนินการสองค่าเท่ากันหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A = B) ไม่เป็นความจริง |
| <> | ตรวจสอบว่าค่าของตัวถูกดำเนินการสองค่าเท่ากันหรือไม่หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง | (A <> B) เป็นจริง |
| > | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A> B) ไม่เป็นความจริง |
| < | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A <B) เป็นจริง |
| > = | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A> = B) ไม่เป็นความจริง |
| <= | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (A <= B) เป็นจริง |
ตัวดำเนินการบูลีน
ตารางต่อไปนี้แสดงตัวดำเนินการบูลีนทั้งหมดที่ภาษาปาสคาลรองรับ ตัวดำเนินการทั้งหมดนี้ทำงานบนตัวถูกดำเนินการบูลีนและสร้างผลลัพธ์แบบบูลีน สมมติตัวแปรA ถือเป็นจริงและตัวแปร B ถือเท็จแล้ว -
แสดงตัวอย่าง
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| และ | เรียกว่าตัวดำเนินการบูลีน AND หากตัวถูกดำเนินการทั้งสองเป็นจริงเงื่อนไขจะกลายเป็นจริง | (A และ B) เป็นเท็จ |
| แล้ว | มันคล้ายกับตัวดำเนินการ AND อย่างไรก็ตามมันรับประกันลำดับที่คอมไพลเลอร์ประเมินนิพจน์ตรรกะ จากซ้ายไปขวาและตัวถูกดำเนินการด้านขวาจะได้รับการประเมินเมื่อจำเป็นเท่านั้น | (A และ B) เป็นเท็จ |
| หรือ | เรียกว่า Boolean OR Operator ถ้าตัวถูกดำเนินการสองตัวใดตัวหนึ่งเป็นจริงเงื่อนไขจะกลายเป็นจริง | (A หรือ B) เป็นจริง |
| หรืออื่น ๆ | มันคล้ายกับ Boolean OR อย่างไรก็ตามจะรับประกันลำดับที่คอมไพลเลอร์ประเมินนิพจน์เชิงตรรกะ จากซ้ายไปขวาและตัวถูกดำเนินการด้านขวาจะได้รับการประเมินเมื่อจำเป็นเท่านั้น | (A หรืออื่น ๆ B) เป็นจริง |
| ไม่ | เรียกว่า Boolean NOT Operator ใช้เพื่อย้อนกลับสถานะตรรกะของตัวถูกดำเนินการ หากเงื่อนไขเป็นจริงตัวดำเนินการ Logical NOT จะทำให้เป็นเท็จ | ไม่ (A และ B) เป็นจริง |
ตัวดำเนินการบิต
ตัวดำเนินการ Bitwise ทำงานบนบิตและดำเนินการแบบบิตต่อบิต ตัวดำเนินการทั้งหมดเหล่านี้ทำงานกับตัวถูกดำเนินการจำนวนเต็มและสร้างผลลัพธ์จำนวนเต็ม ตารางความจริงสำหรับ bitwise และ (&), bitwise หรือ (|) และ bitwise not (~) มีดังนี้ -
| น | q | p & q | p | q | ~ น | ~ q |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 0 | 1 |
สมมติว่า A = 60; และ B = 13; ตอนนี้ในรูปแบบไบนารีพวกเขาจะเป็นดังนี้ -
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
ก ^ B = 0011 0001
~ A = 1100 0011
ตัวดำเนินการ Bitwise ที่สนับสนุนโดย Pascal แสดงอยู่ในตารางต่อไปนี้ สมมติว่าตัวแปร A ถือ 60 และตัวแปร B ถือ 13 จากนั้น:
แสดงตัวอย่าง
| ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| & | ไบนารี AND Operator จะคัดลอกบิตไปยังผลลัพธ์หากมีอยู่ในตัวถูกดำเนินการทั้งสอง | (A & B) จะให้ 12 ซึ่งก็คือ 0000 1100 |
| | | ไบนารีหรือตัวดำเนินการจะคัดลอกบิตหากมีอยู่ในตัวถูกดำเนินการอย่างใดอย่างหนึ่ง | (A | B) จะให้ 61 ซึ่งก็คือ 0011 1101 |
| ! | ไบนารีหรือตัวดำเนินการจะคัดลอกบิตหากมีอยู่ในตัวถูกดำเนินการอย่างใดอย่างหนึ่ง เหมือนกับ | ตัวดำเนินการ | (A! B) จะให้ 61 ซึ่งก็คือ 0011 1101 |
| ~ | Binary Ones Complement Operator เป็นเอกภาพและมีผลของบิต 'พลิก' | (~ A) จะให้ -61 ซึ่งก็คือ 1100 0011 ในรูปแบบส่วนเสริมของ 2 เนื่องจากเลขฐานสองที่ลงนาม |
| << | ตัวดำเนินการกะซ้ายแบบไบนารี ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางซ้ายตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา | A << 2 จะให้ 240 ซึ่งก็คือ 1111 0000 |
| >> | ตัวดำเนินการกะไบนารีขวา ค่าตัวถูกดำเนินการด้านซ้ายจะถูกย้ายไปทางขวาตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการด้านขวา | A >> 2 จะให้ 15 ซึ่งก็คือ 0000 1111 |
โปรดทราบว่าการใช้งาน Pascal ต่างกันในตัวดำเนินการแบบบิต Pascal ฟรีคอมไพเลอร์ที่เราใช้ที่นี่รองรับตัวดำเนินการบิตต่อไปนี้ -
| ตัวดำเนินการ | การดำเนินงาน |
|---|---|
| ไม่ | ไม่ Bitwise |
| และ | Bitwise AND |
| หรือ | Bitwise หรือ |
| xor | Bitwise เอกสิทธิ์หรือ |
| shl | เลื่อนไปทางซ้าย |
| shr | Bitwise เลื่อนไปทางขวา |
| << | เลื่อนไปทางซ้าย |
| >> | Bitwise เลื่อนไปทางขวา |
ลำดับความสำคัญของตัวดำเนินการในภาษาปาสคาล
ลำดับความสำคัญของตัวดำเนินการกำหนดการจัดกลุ่มคำศัพท์ในนิพจน์ สิ่งนี้มีผลต่อวิธีการประเมินนิพจน์ ตัวดำเนินการบางอย่างมีลำดับความสำคัญสูงกว่าผู้อื่น ตัวอย่างเช่นตัวดำเนินการคูณมีลำดับความสำคัญสูงกว่าตัวดำเนินการบวก
ตัวอย่างเช่น x = 7 + 3 * 2; ที่นี่ x ถูกกำหนดให้เป็น 13 ไม่ใช่ 20 เนื่องจากตัวดำเนินการ * มีลำดับความสำคัญสูงกว่า + ดังนั้นจึงได้รับการคูณด้วย 3 * 2 ก่อนแล้วจึงเพิ่มเป็น 7
ที่นี่ตัวดำเนินการที่มีลำดับความสำคัญสูงสุดจะปรากฏที่ด้านบนสุดของตารางตัวดำเนินการที่มีค่าต่ำสุดจะปรากฏที่ด้านล่าง ภายในนิพจน์ตัวดำเนินการที่มีลำดับความสำคัญสูงกว่าจะได้รับการประเมินก่อน
แสดงตัวอย่าง
| ตัวดำเนินการ | ลำดับความสำคัญ |
|---|---|
| ~ ไม่ใช่ | สูงสุด |
| *, /, div, mod และ, & | |
| |,!, +, -, หรือ, | |
| =, <>, <, <=,>,> =, ใน | |
| หรืออื่น ๆ แล้ว | ต่ำสุด |