सी ++ में, == और! = के लिए तर्क क्या है 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.
}
इच्छित अर्थ प्राप्त करने के लिए जहां बिटवाई और शून्य की तुलना से पहले किया जाता है।
सी ++ के लिए तर्क यह है कि सी समान वरीयता नियमों का उपयोग करता है। आपको प्रश्न को सी – nosid
में बदलना चाहिए [सी ऑपरेटर प्राथमिकता (bitwise और == से कम)] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4685072/c-operator-precedence-bitwise-lower-than) – assylias