Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวดำเนินการเชิงตรรกะใน C++


แนวคิดของตัวดำเนินการเชิงตรรกะนั้นเรียบง่าย อนุญาตให้โปรแกรมตัดสินใจตามเงื่อนไขหลายประการ ตัวถูกดำเนินการแต่ละตัวถือเป็นเงื่อนไขที่สามารถประเมินค่าจริงหรือเท็จได้ จากนั้น ค่าของเงื่อนไขจะถูกใช้เพื่อกำหนดค่าโดยรวมของตัวดำเนินการ op1 op2 หรือการจัดกลุ่ม !op1

ตัวดำเนินการ OR แบบลอจิคัล (||) จะคืนค่าบูลีนเป็น จริง หากตัวถูกดำเนินการตัวใดตัวหนึ่งหรือทั้งสองเป็นจริง และส่งกลับค่าเป็นเท็จ ตัวถูกดำเนินการจะถูกแปลงโดยปริยายเป็นประเภทบูลก่อนการประเมิน และผลลัพธ์จะเป็นชนิดบูล ตรรกะ OR มีการเชื่อมโยงจากซ้ายไปขวา ตัวถูกดำเนินการกับตัวดำเนินการ OR แบบลอจิคัลไม่จำเป็นต้องเป็นประเภทเดียวกัน แต่ต้องเป็นประเภทอินทิกรัลหรือตัวชี้ ตัวถูกดำเนินการมักเป็นนิพจน์เชิงสัมพันธ์หรือเท่าเทียมกัน

ตัวถูกดำเนินการแรกได้รับการประเมินอย่างสมบูรณ์และผลข้างเคียงทั้งหมดจะเสร็จสิ้นก่อนที่จะทำการประเมินนิพจน์ OR แบบลอจิคัลต่อไป ตัวถูกดำเนินการที่สองจะถูกประเมินก็ต่อเมื่อตัวถูกดำเนินการแรกประเมินเป็นเท็จ (0) สิ่งนี้จะขจัดการประเมินโดยไม่จำเป็นของตัวถูกดำเนินการที่สองเมื่อนิพจน์ OR ตรรกะเป็นจริง

ตัวดำเนินการตรรกะ AND (&&) ส่งคืนค่าบูลีนเป็น true ถ้าตัวถูกดำเนินการทั้งสองเป็นจริงและคืนค่าเท็จเป็นอย่างอื่น ตัวถูกดำเนินการจะถูกแปลงโดยปริยายเป็นประเภทบูลก่อนการประเมิน และผลลัพธ์จะเป็นชนิดบูล ตรรกะ AND มีการเชื่อมโยงจากซ้ายไปขวา ตัวถูกดำเนินการกับตัวดำเนินการตรรกะ AND ไม่จำเป็นต้องเป็นประเภทเดียวกัน แต่ต้องเป็นประเภทอินทิกรัลหรือตัวชี้ ตัวถูกดำเนินการมักเป็นนิพจน์เชิงสัมพันธ์หรือเท่าเทียมกัน

ตัวถูกดำเนินการแรกได้รับการประเมินอย่างสมบูรณ์และผลข้างเคียงทั้งหมดจะเสร็จสิ้นก่อนที่จะทำการประเมินนิพจน์ตรรกะและนิพจน์ต่อไป ตัวถูกดำเนินการที่สองจะถูกประเมินก็ต่อเมื่อตัวถูกดำเนินการแรกประเมินว่าเป็นจริง (ไม่ใช่ศูนย์) การประเมินนี้ช่วยขจัดการประเมินโดยไม่จำเป็นของตัวถูกดำเนินการที่สองเมื่อนิพจน์ตรรกะ AND เป็นเท็จ

ตัวดำเนินการปฏิเสธเชิงตรรกะ (!) กลับความหมายของตัวถูกดำเนินการ ตัวถูกดำเนินการต้องเป็นเลขคณิตหรือประเภทตัวชี้ (หรือนิพจน์ที่ประเมินเป็นเลขคณิตหรือประเภทตัวชี้) ตัวถูกดำเนินการถูกแปลงโดยปริยายเป็นประเภทบูล ผลลัพธ์จะเป็นจริงหากตัวถูกดำเนินการที่แปลงแล้วเป็นเท็จ ผลลัพธ์จะเป็นเท็จหากตัวถูกดำเนินการที่แปลงแล้วเป็นจริง ผลลัพธ์เป็นประเภทบูล

ตัวอย่าง

#include<iostream>
using namespace std;
int main() {
   bool x = true, y = false;
   cout << (x || y) << endl;
   cout << (x && y) << endl;
   cout << (!x) << endl;
   return 0;
}

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ -

1
0
0

นี่เป็นเพราะหนึ่งใน 2 ตัวเป็นเท็จ ดังนั้น และเป็นเท็จ หนึ่งเป็นจริงหรือเป็นจริง และไม่ใช่ของ true(x) เป็นเท็จ กล่าวคือ 0