क्या कोई औचित्य की व्याख्या कर सकता है, क्यों सबसे लोकप्रिय भाषाओं के एक समूह में (नीचे नोट देखें) तुलना ऑपरेटरों (==; <;>, <,>, <=>>) को बिटवाइस ऑपरेटरों की तुलना में उच्च प्राथमिकता है ((; |, |, ^) , ~)
मुझे नहीं लगता कि मैंने कभी ऐसे उपयोग का सामना किया है जहां यह पूर्वता स्वाभाविक होगी। यह हमेशा की तरह सामान है:
if( (x & MASK) == CORRECT ) ... // Chosen bits are in correct setting, rest unimportant
if( (x ^ x_prev) == SET ) // only, and exactly SET bit changed
if( (x & REQUIRED) < REQUIRED ) // Not all conditions satisfied
मेरे द्वारा उपयोग किए जाने वाले मामले:
flags = ( x == 6 | 2 ); // set bit 0 when x is 6, bit 1 always.
पास न के बराबर हैं।
ऑपरेटरों की ऐसी पूर्वता पर निर्णय लेने के लिए भाषा डिजाइनरों की प्रेरणा क्या थी?
उदाहरण के लिए, शीर्ष 12 भाषाओं में सभी लेकिन SQL इस तरह है कि प्रोग्रामिंग लैंग्वेज की लोकप्रियता सूची में langpop.com पर: C, Java, C ++, PHP, JavaScript, Python, C #, Perl, SQL, Ruby, Shell, Visual Basic।
[arithmetics] [logic operator] [arithmetics]
। अधिकांश प्रोग्रामर कोष्ठक की गड़बड़ी पैदा नहीं करते हैं if(((x+getLowX()) < getMinX) || ((x-getHighX())>getMaxX())))
- जैसे कि लॉजिक्स पर अंकगणित की पूर्ववर्ती स्थिति को मान लेंगे और ऊपर की if( ( x + getLowX() < getMinX ) || ( x - getHighX() > getMaxX() ))
पूर्ववर्तीता को मानते हुए लिखेंगे । अब सहज रूप से एक ही व्यवहार करना चाहिए, XOR अंकगणितीय ऑपरेटर। तथ्य यह है कि पूरी तरह से सहज ज्ञान युक्त है के रूप में व्याख्या की है। +
<
if( x ^ getMask() != PATTERN )
if( x ^ ( getMask() != PATTERN ) )