สิ่งนี้ถูกต้องตัวดำเนินการลัดวงจรหรือ (||) จะส่งกลับค่าเดียวกันกับตัวดำเนินการที่ไม่ใช่ลัดวงจรหรือ (|) เสมอ (*)
อย่างไรก็ตามหากตัวถูกดำเนินการแรกเป็นจริงตัวดำเนินการลัดวงจรจะไม่ทำให้เกิดการประเมินตัวถูกดำเนินการตัวที่สองในขณะที่ตัวดำเนินการที่ไม่ใช่ลัดวงจรจะทำให้เกิดการประเมินตัวถูกดำเนินการทั้งสองเสมอ สิ่งนี้อาจส่งผลกระทบต่อประสิทธิภาพการทำงานและบางครั้งเกิดผลข้างเคียง
ดังนั้นจึงมีการใช้ทั้งสองอย่าง: ถ้าคุณสนใจประสิทธิภาพและการประเมินตัวถูกดำเนินการครั้งที่สองไม่ได้สร้างผลข้างเคียงใด ๆ (หรือถ้าคุณไม่สนใจพวกเขา) โดยวิธีทั้งหมดใช้ตัวดำเนินการลัดวงจร . แต่ถ้าด้วยเหตุผลบางอย่างที่คุณต้องการมีผลข้างเคียงของตัวถูกดำเนินการตัวที่สองดังนั้นคุณควรใช้ตัวดำเนินการที่ไม่ลัดวงจร
ตัวอย่างที่คุณควรใช้ตัวดำเนินการที่ไม่ลัดวงจร:
if( write_customer_to_database() != SUCCESS |
write_supplier_to_database() != SUCCESS |
write_order_to_database() != SUCCESS )
{
transaction_rollback();
}
(*) ยกเว้นบางสถานการณ์ที่บิดเบือนซึ่งการประเมินตัวถูกดำเนินการครั้งแรกเป็นสาเหตุเท็จโดยผลข้างเคียงตัวถูกดำเนินการตัวที่สองเพื่อประเมินผลเป็นจริงแทนที่จะเป็นเท็จ