2008-09-10 18 views

उत्तर

13

तार्किक ऑपरेशन पूर्वता आदेश

  1. Not
  2. And
  3. Or
  4. Xor
  5. Eqv
  6. Imp

तुलना ऑपरेशन पूर्वता आदेश

  1. =
  2. <>
  3. <
  4. >
  5. <=
  6. >=
  7. Like, Is

अंकगणित ऑपरेशन पूर्वता आदेश

  1. ^
  2. - (एकल निषेध)
  3. *, /
  4. \
  5. Mod
  6. +, - (बाइनरी अलावा/घटाव)
  7. &

स्रोत:Sams Teach Yourself Visual Basic 6 in 24 Hours — Appendix A: Operator Precedence

+0

ऑर्डर क्या है? सबसे कम से उच्चतम तक? –

+1

उत्तर की प्रस्तुति थोड़ा भ्रामक हो सकती है। तीन श्रेणियों के अंदर आदेश पहले से आखिरी है, लेकिन श्रेणियों का क्रम स्वयं का पहला होता है: वास्तविकता में, अंकगणितीय परिचालनों का तुलना तुलनात्मक संचालन से पहले किया जाता है, जिनका तार्किक परिचालन से पहले मूल्यांकन किया जाता है। एक स्पष्ट प्रस्तुति के लिए, मैं पहले अंकगणितीय परिचालनों को डालकर उत्तर प्रस्तुत करने का सुझाव दूंगा, इसके बाद तुलनात्मक संचालन के बाद, तार्किक परिचालनों के बाद। यहां अच्छा संदर्भ भी है: https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/operator-precedence –

9

यह क्या है या नहीं आप डिबगर में हैं पर निर्भर करता है । वास्तव में। ठीक है, तरह।

निष्ठाएं सबसे पहले आती हैं। फिर तुलना (>, <, =, आदि)। फिर तार्किक ऑपरेटरों। चाल यह है कि निष्पादन का आदेश परिभाषित नहीं किया गया है।

If A < B And B < C Then 

आप की गारंटी है कि < ऑपरेटरों दोनों तार्किक और तुलना से पहले निष्पादित किया जाएगा: यह निम्नलिखित अभिव्यक्ति दी मतलब है। लेकिन आपको गारंटी नहीं है कि कौन सी तुलना पहले निष्पादित की जाएगी।

आईआईआरसी, डीबगर दाएं से दाएं निष्पादित करता है, लेकिन संकलित अनुप्रयोग दाएं से दाएं निष्पादित करता है। मैं उन्हें पीछे की ओर ले सकता था (यह एक लंबा समय रहा है), लेकिन महत्वपूर्ण बात यह है कि वे अलग हैं। तो वास्तविक प्राथमिकता नहीं बदली है, लेकिन निष्पादन का आदेश हो सकता है।

+0

बहुत कम भाषाएं इस तरह के कथन में मूल्यांकन के सटीक क्रम को निर्दिष्ट करती हैं - आमतौर पर कंपाइलर होते हैं ऐसा करने के लिए स्वतंत्रता दी गई है जिस तरह इसे अधिक कुशल/तेज़/सुरक्षित/माना जाता है। किसी को किसी भी भाषा में निष्पादन के आदेश पर निर्भर कोड नहीं लिखना चाहिए! –

+0

यदि आपने कोड लिखा है जो उस तरह की अभिव्यक्ति में निष्पादन के आदेश पर निर्भर करता है, तो आप जो कुछ भी प्राप्त करते हैं उसके लायक हैं! "हमेशा कोड करें कि जो व्यक्ति आपका कोड बनाए रखता है वह एक हिंसक मनोचिकित्सक है जो जानता है कि आप कहां रहते हैं।" – MarkJ

+1

जोएल, क्या इसका मतलब यह है कि यदि कोई बाएं सही मूल्यांकन करता है, और एंड और झूठी के लिए एक या ऑपरेशन दाएं हाथ को छोड़ने में सक्षम नहीं होगा? – Oskar

2

उपयोग कोष्ठकों


संपादित करें: यह नए कोड के लिए मेरी सलाह है! लेकिन ऑस्कर किसी और के कोड को पढ़ रहा है, इसलिए इसे किसी भी तरह से समझना चाहिए। मैं सुझाव देता हूं कि वीबी 6 मैनुअल विषय ऑपरेटर प्राथमिकता। दुर्भाग्यवश यह विषय MSDN online VB6 manual में प्रतीत नहीं होता है, इसलिए मैं यहां लॉजिकल ऑपरेटर जानकारी पेस्ट कर दूंगा। यदि आपने वीबी 6 सहायता (एमएसडीएन लाइब्रेरी) स्थापित की है तो आप इसे अपनी मशीन पर रखेंगे।

तार्किक ऑपरेटरों वरीयता का निम्न क्रम में मूल्यांकन किया जाता है:

Not 
And 
Or 
Xor 
Eqv 
Imp 

विषय भी तुलना और अंकगणितीय ऑपरेटर के लिए पूर्वता बताते हैं।

मैं सुझाव देता हूं कि एक बार जब आप सटीकता का पता लगा लेंगे, तो आप कोष्ठक में डाल दें जब तक कोड को संपादित न करने का कोई अच्छा कारण न हो।

+2

एक अच्छा विकल्प अगर मुझे किसी और के कोड को पढ़ने की ज़रूरत नहीं है ... – Oskar

+0

ओह, मुझे तुम्हारा दर्द महसूस होता है। मैंने अपने जवाब में कुछ और जोड़ा है। सलाह के लिए ऑपरेटर प्राथमिकता वीबी 6 सहायता – MarkJ

+1

+1 में है, क्योंकि यह अभी भी अच्छी सलाह है। एक तरफ ध्यान दें, मुझे समझ में नहीं आता कि लोग इतने सारे ऑपरेटरों को कोड की एक पंक्ति में पहली जगह क्यों क्रैक करने का प्रयास करते हैं। कभी-कभी मैं भाषाओं को परिभाषित करता हूं * नहीं * प्राथमिकता, ताकि लोगों को * यह सुनिश्चित करने के लिए कि वे किस बिल्ली को पूरा करने की कोशिश कर रहे थे, यह सुनिश्चित करने के लिए * कोष्ठक का उपयोग करना था। मुझे लगता है कि हमेशा लिस्प है ... –

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