हम सभी जानते हैं कि तार्किक &&
ऑपरेटर शॉर्ट सर्किट यदि बाएं ऑपरेंड false
है, क्योंकि हम जानते हैं कि यदि एक ऑपरेंड false
है, तो परिणाम भी false
है।बिटवाई और ऑपरेटर शॉर्ट-सर्किट क्यों नहीं है?
बिटवाई &
ऑपरेटर भी शॉर्ट-सर्किट क्यों नहीं करता है? यदि बाएं ऑपरेंड 0
है, तो हम जानते हैं कि परिणाम भी 0
है। मैंने जिस भाषा में इसका परीक्षण किया है (सी, जावास्क्रिप्ट, सी #) पहले के बाद रोकने के बजाय दोनों ऑपरेटरों का मूल्यांकन करता है।
क्या कोई कारण है कि &
ऑपरेटर शॉर्ट-सर्किट को जाने का कोई बुरा विचार क्यों होगा? यदि नहीं, तो अधिकांश भाषाएं इसे शॉर्ट-सिसीट क्यों नहीं बनाती हैं? यह एक स्पष्ट अनुकूलन की तरह लगता है।
एक कारण फ़ंक्शन कॉल के दुष्प्रभावों की अनुमति देना होगा। –
चूंकि बिटवाई ऑपरेटर आमतौर पर पूर्णांक ऑपरेटरों पर बिटवाई ऑपरेशंस के लिए उपयोग किए जाते हैं (और वे आमतौर पर एकल मशीन निर्देशों के अनुरूप होते हैं) यह दुर्लभ 0 मामलों की जांच के लिए अतिरिक्त सशर्त पेश करने के अनुकूलन के अलावा कुछ और होगा। गुणांक 0 पर शॉर्ट सर्किट क्यों नहीं करता है? खैर, क्योंकि यह एक मशीन अंक के अनुरूप एक सरल अंकगणितीय ऑपरेशन है और जांच रहा है कि कोई भी 0 ऑपरेंड के लिए प्रत्येक गुणा की जांच नहीं करेगा। –
बाएं ऑपरेशन '0xFFFFFFFF था अगर bitwise' | 'ऑपरेटर शॉर्ट सर्किट सकता है। –