แนวคิดของตัวดำเนินการเชิงตรรกะนั้นเรียบง่าย อนุญาตให้โปรแกรมตัดสินใจตามเงื่อนไขหลายประการ ตัวถูกดำเนินการแต่ละตัวถือเป็นเงื่อนไขที่สามารถประเมินค่าจริงหรือเท็จได้ จากนั้น ค่าของเงื่อนไขจะถูกใช้เพื่อกำหนดค่าโดยรวมของตัวดำเนินการ 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