C टर्नेरी ऑपरेटर कभी भी शॉर्ट-सर्किट नहीं कर सकता है, क्योंकि यह केवल अभिव्यक्ति के लिए दिए गए मान का निर्धारण करने के लिए एक एकल ( a ) स्थिति का मूल्यांकन करता है b और c , यदि कोई मान वापस किया जा सकता है।
निम्नलिखित कोड:
int ret = a ? b : c;
यह निम्नलिखित कोड के लगभग बराबर है:
int ret;
if(a) {ret = b} else {ret = c}
भाव a तरह && या अन्य ऑपरेटरों द्वारा गठित किया जा सकता है || वह शॉर्ट सर्किट कर सकता है क्योंकि वे एक मूल्य को वापस करने से पहले दो अभिव्यक्तियों का मूल्यांकन कर सकते हैं, लेकिन इसे शॉर्ट-सर्किट करने वाले टर्नरी ऑपरेटर के रूप में नहीं माना जाएगा, लेकिन ऑपरेटर इस स्थिति में उपयोग करते हैं जैसा कि एक नियमित रूप से स्टेटमेंट में होता है।
अपडेट करें:
टर्नरी ऑपरेटर के शॉर्ट-सर्किट ऑपरेटर होने के बारे में कुछ बहस है। तर्क कहता है कि कोई भी ऑपरेटर जो इसका मूल्यांकन नहीं करता है, वह नीचे दिए गए टिप्पणी में @aruisdante के अनुसार शॉर्ट-सर्किट करता है। यदि यह परिभाषा दी जाती है, तो टर्नरी ऑपरेटर शॉर्ट-सर्कुलेटिंग होगा और इस मामले में मूल परिभाषा मैं सहमत हूं। समस्या यह है कि "शॉर्ट-सर्किट" शब्द का उपयोग मूल रूप से एक विशेष प्रकार के ऑपरेटर के लिए किया गया था जिसने इस व्यवहार की अनुमति दी और वे तर्क / बूलियन ऑपरेटर हैं, और यही कारण है कि केवल वही हैं जो मैं समझाने की कोशिश करूंगा।
शॉर्ट-सर्किट मूल्यांकन के लेख के बाद , शॉर्ट-सर्किट मूल्यांकन को केवल भाषा में कार्यान्वित बूलियन ऑपरेटरों के लिए संदर्भित किया जाता है, जहां यह जानते हुए कि पहला ऑपरेंड दूसरा अप्रासंगिक बना देगा, यह && ऑपरेटर के लिए पहला ऑपरेंड गलत है। , और के लिए || ऑपरेटर पहला ऑपरेंड सच है , C11 कल्पना 6.5.13 लॉजिकल एंड ऑपरेटर और 6.5.14 लॉजिकल ओआर ऑपरेटर में भी इसे नोट करता है।
इसका मतलब यह है कि शॉर्ट-सर्किट व्यवहार की पहचान करने के लिए, आप एक ऑपरेटर से इसकी पहचान करने की अपेक्षा करेंगे जो बूलियन ऑपरेटरों की तरह सभी ऑपरेंड का मूल्यांकन करना होगा यदि पहला ऑपरेंड दूसरा अप्रासंगिक नहीं बनाता है। यह "लॉजिकल शॉर्ट-सर्कुलेटिंग" सेक्शन के तहत मैथवर्क्स में शॉर्ट-सर्किट के लिए एक और परिभाषा में लिखा गया है , क्योंकि लॉजिकल-सर्कुलेटिंग तार्किक ऑपरेटरों से आता है।
जैसा कि मैं सी टर्नरी ऑपरेटर को समझाने की कोशिश कर रहा हूं, जिसे टर्नरी भी कहा जाता है अगर, केवल दो ऑपरेंड का मूल्यांकन करता है, तो यह पहले एक का मूल्यांकन करता है, और फिर एक दूसरे का मूल्यांकन करता है, या तो शेष दो के मूल्य के आधार पर पेहला। यह हमेशा ऐसा करता है, इसका किसी भी स्थिति में तीनों का मूल्यांकन करने वाला नहीं है, इसलिए किसी भी मामले में "शॉर्ट-सर्किट" नहीं है।
हमेशा की तरह, यदि आप देखते हैं कि कुछ सही नहीं है, तो कृपया इस के खिलाफ एक तर्क के साथ एक टिप्पणी लिखें, न कि केवल एक डाउनवोट, जो सिर्फ एसओ अनुभव को बदतर बनाता है, और मेरा मानना है कि हम एक बेहतर समुदाय हो सकते हैं, जो कि केवल डाउनवोट उत्तर देता है कोई इससे सहमत नहीं है।