यह सही है, शॉर्ट-सर्किट या ऑपरेटर (||) हमेशा गैर-शॉर्ट-सर्किट या ऑपरेटर ((।)) के समान मान लौटाएगा। (*)
हालांकि, यदि पहला ऑपरेंड सही है, तो शॉर्ट-सर्किट ऑपरेटर दूसरे ऑपरेंड के मूल्यांकन का कारण नहीं होगा, जबकि गैर-शॉर्ट-सर्किट ऑपरेटर हमेशा दोनों ऑपरेंड के मूल्यांकन का कारण होगा। यह प्रदर्शन पर प्रभाव डाल सकता है, और कभी-कभी दुष्प्रभाव में भी।
तो, दोनों के लिए एक उपयोग है: यदि आप प्रदर्शन के लिए परवाह करते हैं, और दूसरे ऑपरेंड के मूल्यांकन से कोई दुष्प्रभाव नहीं होता है, (या यदि आप उनकी परवाह नहीं करते हैं), तो हर तरह से शॉर्ट-सर्किट ऑपरेटर का उपयोग करें । लेकिन अगर किसी कारण से आपको दूसरे ऑपरेंड के साइड-इफेक्ट्स की आवश्यकता होती है, तो आपको गैर-शॉर्ट-सर्किट ऑपरेटर का उपयोग करना चाहिए।
एक उदाहरण जहां आपको गैर-शॉर्ट-सर्किट ऑपरेटर का उपयोग करना चाहिए:
if( write_customer_to_database() != SUCCESS |
write_supplier_to_database() != SUCCESS |
write_order_to_database() != SUCCESS )
{
transaction_rollback();
}
(*) कुछ वास्तव में विकृत परिदृश्य को छोड़कर, जहां पहले ऑपरेंड का मूल्यांकन झूठे कारणों से होता है, दूसरे के लिए साइड-इफेक्ट के कारण गलत के बजाय सच का मूल्यांकन करने के लिए।