जवाबों:
मैं थोड़ा MSDN सी # प्रलेखन जिसमें कहा गया है कि से उलझन में हूँ
&
और|
तार्किक ऑपरेटर हैं और कहा कि&&
और||
सशर्त ऑपरेटर हैं। मैं कॉल करता रहता हूं&&
,||
और!
लॉजिकल ऑपरेटर्स, तो मैं गलत हूं?
नहीं; तुम सही हो।
MSDN प्रलेखन में कई छोटे, ज्यादातर महत्वहीन नामकरण त्रुटियां हैं; मैंने उनमें से कई को बाहर निकालने की कोशिश की, जैसे कि मैं कर सकता था, लेकिन ऐसे मामलों में जहां यह गलत और भ्रामक नहीं है, यह हमेशा समय का एक बुद्धिमान उपयोग नहीं है। यदि आप C # सुविधा के नाम के बारे में एक निश्चित विवरण चाहते हैं तो विनिर्देश पर जाएं।
तो: संबंधित प्राधिकरण C # विनिर्देश है, जो खंड 7.11 में बताता है:
&
,^
, और|
ऑपरेटरों तार्किक ऑपरेटर कहा जाता है।
यह आगे चलकर अंतर्निहित लॉजिकल ऑपरेटर्स को पूर्णांक, एन्यूमरेशन, बुलियन और नॉलेबल-बुलियन लॉजिकल ऑपरेटर्स में तोड़ देता है। उपयोगकर्ता-परिभाषित तार्किक ऑपरेटर भी हैं; विवरण के लिए युक्ति देखें।
खंड 7.12 में हमारे पास है
&&
और||
ऑपरेटरों सशर्त तार्किक ऑपरेटर कहा जाता है। उन्हें "शॉर्ट-सर्कुलेटिंग" तार्किक ऑपरेटर भी कहा जाता है।
इसलिए ये सभी तार्किक परिचालक हैं। उनमें से कुछ सशर्त तार्किक ऑपरेटर हैं ।
क्या सशर्त तार्किक ऑपरेटरों बनाता सशर्त ? कोई अनुमान लगा सकता है कि ऐसा इसलिए है क्योंकि वे आमतौर पर सशर्त बयानों ( if
) या सशर्त अभिव्यक्तियों ( ? :
) में उपयोग किए जाते हैं। वास्तविक कारण विनिर्देश द्वारा दिया गया है:
&&
और||
ऑपरेटरों की सशर्त संस्करण हैं&
और|
ऑपरेटरों: आपरेशनx && y
आपरेशन से मेल खाती हैx & y
, सिवाय इसके किy
केवल मूल्यांकन किया जाता है, तोx
गलत नहीं है। ऑपरेशन ऑपरेशन सेx || y
मेल खाता हैx | y
, सिवाय इसके किy
मूल्यांकन किया जाता है केवल अगरx
यह सच नहीं है।
सशर्त तार्किक ऑपरेटरों को इस प्रकार नामित किया जाता है क्योंकि बाएं हाथ के संचालन के मूल्य के आधार पर दाएं हाथ के संचालन का मूल्यांकन सशर्त रूप से किया जाता है।
हम इसे और अधिक स्पष्ट रूप से देख सकते हैं कि सशर्त तार्किक संचालक सशर्त अभिव्यक्तियों के लिए सिर्फ "वाक्यगत शर्करा" हैं । x && y
लिखने के लिए बस एक अधिक सुखद तरीका है x ? y : false
, और लिखने के x || y
लिए बस एक अधिक सुखद तरीका है x ? true : y
। सशर्त तार्किक अभिव्यक्तियां वास्तव में सशर्त अभिव्यक्ति हैं।
सशर्त तार्किक ऑपरेटर का एक उपयोगकर्ता-परिभाषित रूप भी है, और यह थोड़ा मुश्किल है। विवरण के लिए विनिर्देश देखें।
आगे पढ़ने, अगर इस विषय में आप रुचि रखते हैं:
C # में ये सभी लॉजिकल ऑपरेटर हैं।
int x = 0xABCD & 0xFF // x == 0xCD
&&
और ||
उन्हें " सशर्त तार्किक ऑपरेटर" कहा जाता है, क्योंकि वे शॉर्ट-सर्कुलेटिंग हैं।
bool someOtherCondition = true;
if (x == 0xEF && someOtherCondition) // someOtherCondition is not evaluated,
// because x == 0xEF is false
ध्यान दें कि यह शब्दावली भाषा से भाषा में भिन्न है। सी और सी ++ में &&
और ||
सिर्फ लॉजिकल ऑपरेटर्स हैं। जावा में, &
और बिटवाइज़ ऑपरेटर्स|
कहा जाता है , जबकि C और C ++ उन्हें Arithmetic Operators के रूप में वर्गीकृत करता है ।
मुद्दा यह है कि है &
और |
कर रहे हैं बिटवाइज़ ऑपरेटरों, जिसका अर्थ है कि वे करने के लिए और उपज बिट श्रृंखला के मूल्यों लागू होते हैं। और बिटवाइस प्रोग्रामर के बीच एक बहुत इस्तेमाल किया जाने वाला शब्द है।
उदाहरण के लिए 0xff & 0x00 == 0x00
, जबकि 0xff | 0x00 == 0xff
।
और &&
और ||
स्थिति के लिए आवेदन किया है, और शर्तों के सामान्य मूल्यों उपज कर रहे हैं; यानी true
और false
।
उदाहरण के लिए true && false == false
, जबकि true || false == true
।
इसलिए &&
और सशर्त ऑपरेटर ||
कहे जा सकते हैं , भले ही यह प्रोग्रामर के बीच एक सामान्य शब्द नहीं है।
बेशक, हर C, C ++, Java और C # प्रोग्रामर को वह सब पता है। लेकिन मुझे लगता है कि गलतफहमी इसलिए होती है क्योंकि "सशर्त ऑपरेटर" एक शब्द नहीं है जिसका इस्तेमाल अक्सर हमारे प्रोग्रामर करते हैं।
|
साथ विनिमेय है||
, भले ही कई मामलों में उन्हें कार्यक्रम के व्यवहार में कोई स्पष्ट परिवर्तन के साथ बदल दिया जा सकता है।