2012-09-19 18 views
8

मैं जानना चाहता हूं कि प्रोग्रामिंग भाषाओं में ऑपरेटर प्राथमिकता कार्यान्वयन पर निर्भर करती है या कोई निश्चित नियम है कि सभी भाषाएं पालन करती हैं। और यदि संभव हो, तो क्या आप निम्न ऑपरेटरों को सबसे पहले प्राथमिकता के साथ ऑर्डर कर सकते हैं: और, या नहीं, नहीं, एक्सओआर।बूलियन ऑपरेटर प्राथमिकता

+0

मैं XOR की पूर्वता याद कभी नहीं हो सकता है, लेकिन सभी भाषाओं मैं का उपयोग किया है के लिए एक ही पूर्वता है अन्य तीन। – Neil

उत्तर

8

मैंने गुमराह किया और this पाया जो कहता है कि एपीएल और स्मॉलटाक जैसी कुछ भाषाओं में ऑपरेटर प्राथमिकता नियम नहीं हैं और वे सख्ती से बाएं से दाएं/बाएं से दाएं अभिव्यक्तियों का मूल्यांकन करते हैं।

हालांकि, पूर्वता के रिश्तेदार आदेश का पालन है नहीं> XOR> और> या भाषाओं के सबसे विशेष रूप से उन सी

+1

[इस] के अनुसार (http://en.cppreference.com/w/c/language/operator_precedence), सी की प्राथमिकता वास्तव में नहीं है> और> एक्सओआर> या, एक्सओआर से पहले और आने से पहले। जावास्क्रिप्ट और जावा भी इस आदेश का पालन करें। – mbomb007

2

बूलियन या बिटवाइज़ से ली गई है? कोई निश्चित नियम नहीं है, ज्यादातर भाषाओं में समान नियम होते हैं लेकिन विवरण में भिन्न होते हैं। भाषा परिभाषा में इसे देखो।

+0

ठीक है। पोस्टिंग करते समय मेरे पास बुलियन ऑपरेटर दिमाग में थे। मुझे bitwise ऑपरेटरों की याद दिलाने के लिए धन्यवाद। – Mika

0

तीन मूल बूलियन ऑपरेटर हैं: नहीं, और, OR। एक्सओआर A AND NOT B OR NOT A AND B या (A OR NOT B) AND (NOT A OR B) का एक साधारण संस्करण है। इसलिए, केवल इन तीनों की सामान्य प्राथमिकता है: नहीं> और> OR। एक्सओआर की भाषाओं में अलग-अलग स्थिति है, लेकिन यह निश्चित रूप से OR से कम नहीं है और उससे कम नहीं है। अधिकांश भाषाओं (जैसे सी/सी ++/जावास्क्रिप्ट इत्यादि) में यह AND और OR के बीच है, लेकिन अन्य में (उदा। पर्ल) एक्सओआर की वही प्राथमिकता है यानी।

(या केवल और और नहीं का उपयोग कर व्यक्त किया जा सकता है, लेकिन यह अभी भी एक बुनियादी ऑपरेटर है: A OR B = NOT(NOT A AND NOT B))

+0

क्या अलग-अलग प्राथमिकता रखने का कोई अच्छा कारण है? मुझे लगता है कि (एक आदर्श दुनिया में) बूलियन ऑपरेटरों के पास समान स्तर और तार्किक संचालन होना चाहिए जो हमेशा बाएं से दाएं प्रदर्शन किए जाते हैं। क्या किसी अन्य तरीके से होने का कोई अच्छा कारण है? 'सच्चे xor false या true' को सत्य के रूप में मूल्यांकन किया जाना चाहिए ('(true xor false) या true'), झूठी नहीं है (' सत्य xor (false या true) ' – Junior

+0

हां। कारण अंकगणितीय ऑपरेटरों के समान है। यह एक "अलग बीजगणित" (बूलियन बीजगणित) है। और गुणा का एक प्रकार है, और या इसके अलावा है। ऐसे क्षेत्र हैं, जहां यह मानक बीजगणित (उदाहरण के लिए डिजिटल सर्किट का निर्माण) से अधिक महत्वपूर्ण है। – FERcsI

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