9

सी ++ में, == और! = के लिए तर्क क्या है bit bit और, XOR, और OR की तुलना में उच्च प्राथमिकता है?बिट = और एक्सओआर, और OR की तुलना में == की उच्च प्राथमिकता वाले तर्क के लिए तर्क क्या है?

यह करने के लिए मुझे और अधिक प्राकृतिक operator== और operator!= के बाद operator&, operator^, और operator| आने के लिए प्रतीत होता है। मैं प्रेरणा को समझना चाहता हूं ताकि मैं आदेश को बेहतर याद कर सकूं। ,

if (bitFields & value == 0) { // Incorrect test. 
    // Do Something. 
} 

के बाद से == परिणाम या तो 1 या 0 यही कारण है कि आप कभी भी बिटवाइज़ कार्यों के लिए इसका उपयोग करना चाहते हैं:

उदाहरण के लिए, मुझे लगता है कि होगा उपयोग के निम्नलिखित प्रकार आम हो सकता है? इसके बजाए, उपर्युक्त लिखा जाना चाहिए:

if ((bitFields & value) == 0) { // Correct test. 
    // Do Something. 
} 

इच्छित अर्थ प्राप्त करने के लिए जहां बिटवाई और शून्य की तुलना से पहले किया जाता है।

+6

सी ++ के लिए तर्क यह है कि सी समान वरीयता नियमों का उपयोग करता है। आपको प्रश्न को सी – nosid

+2

में बदलना चाहिए [सी ऑपरेटर प्राथमिकता (bitwise और == से कम)] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4685072/c-operator-precedence-bitwise-lower-than) – assylias

उत्तर

6
  1. यह सी
  2. से ऐतिहासिक है अपने if बयान

उदा कार्यों के उपयोग पर विचार

if (func1() == 2 & func2() == 3) 
== की पूर्वता जा रहा है उच्च कि & सुनिश्चित करता है कि दोनों कार्यों कहा जाता है के साथ

+2

यह थोड़ा सा और उचित उपयोग नहीं लगता है। – Matt

+1

@ मैट, यह एक पूरी तरह से उचित उपयोग है: कोई शॉर्ट सर्किटिंग नहीं। – chris

+0

क्या होगा यदि func1() 'रिटर्न 1 और 'func2()' रिटर्न 2? – mkb

संबंधित मुद्दे