MATLAB में &
और &&
लॉजिकल ऑपरेटरों के बीच क्या अंतर है?MATLAB में & &&& के बीच क्या अंतर है?
उत्तर
एकल ampersand & तार्किक और ऑपरेटर है। डबल ampersand & & फिर से एक तार्किक और ऑपरेटर है जो शॉर्ट-सर्किटिंग व्यवहार को नियुक्त करता है। लघु सर्किटिंग अर्थ केवल यह है केवल जब परिणाम पूरी तरह से पहले संकार्य (बाएं हाथ की ओर)
एक & बी (ए और बी मूल्यांकन किया जाता है)
द्वारा निर्धारित नहीं है दूसरे संकार्य (दाहिने हाथ की ओर) मूल्यांकन किया जाता है & & बी (बी केवल मूल्यांकन किया जाता है यदि ए सत्य है)
दोनों तार्किक और संचालन हैं। & & हालांकि, एक "शॉर्ट-सर्किट" ऑपरेटर है। MATLAB दस्तावेज़ों से:
वे शॉर्ट-सर्किट ऑपरेटरों हैं कि वे केवल दूसरे ऑपरेंड का मूल्यांकन करते हैं जब परिणाम पहले ऑपरेंड द्वारा पूरी तरह से निर्धारित नहीं होता है।
और देखें here।
& & और || short circuit ऑपरेटर स्केलर्स पर चल रहे हैं। & और | हमेशा दोनों ऑपरेटरों का मूल्यांकन करें और सरणी पर काम करें।
अन्य भाषाओं की तरह, '' एक तार्किक बिटवाई ऑपरेटर है, जबकि '& &' एक तार्किक ऑपरेशन है।
उदाहरण के लिए (क्षमा करें मेरे वाक्यविन्यास)।
तो एक = [यह सच है यह सच है झूठा सच] बी = झूठी
एक & बी = [झूठी झूठी झूठी झूठी]
..or अगर बी = सच एक & बी = [यह सच है यह सच है झूठा सच]
'& &' के लिए, दायां ऑपरेंड केवल तभी गणना की जाती है जब बाएं ऑपरेंड सत्य है, और परिणाम एक एकल बूलियन मान है।
एक्स = (ख ~ = 0) & & (एक/b> 18,5)
आशा है कि स्पष्ट है।
जैसा कि पहले ही दूसरों के द्वारा उल्लेख किया है, &
एक logical AND operator और &&
एक short-circuit AND operator है।वे कैसे ऑपरेंड मूल्यांकन किया जाता है में भी है या नहीं, वे सरणियों या scalars पर काम लेकर मतभेद हैं:
&
(AND ऑपरेटर) और|
(OR ऑपरेटर) एक तत्व-में सरणियों पर काम कर सकते हैं बुद्धिमान फैशन।&&
और||
शॉर्ट सर्किट संस्करण हैं जिसके लिए दूसरा ऑपरेंड केवल तभी मूल्यांकन किया जाता है जब परिणाम पहले ऑपरेंड द्वारा पूरी तरह से निर्धारित नहीं होता है। ये केवल स्केलर पर संचालित हो सकते हैं, सरणी नहीं।
&&
और ||
हमेशा स्केलर इनपुट और शॉर्ट-सर्किट लें। |
और &
केवल/समय बयानों में सरणी इनपुट और शॉर्ट-सर्किट लें। असाइनमेंट के लिए, उत्तरार्द्ध शॉर्ट-सर्किट नहीं करता है।
अधिक जानकारी के लिए these doc pages देखें।
अंगूठे का एक अच्छा नियम है जब सशर्त बयान में उपयोग के लिए तर्क का निर्माण (अगर, आदि) हमेशा का उपयोग है & &/|| रूपों, जब तक कि एक बहुत अच्छा कारण नहीं है। इसके दो कारण ... हैं
- दूसरों के रूप में उल्लेख किया है, & & से कम-सर्किटिंग व्यवहार/|| अधिकांश सी जैसी भाषाओं के समान है। उस समानता/परिचितता को आम तौर पर इसके पक्ष में एक बिंदु माना जाता है।
- & & या || फॉर्म बलों को वेक्टर तर्कों के लिए अपना इरादा तय करने के लिए पूर्ण कोड लिखने के लिए। जब एक = [1 0 0 1] और बी = [0 1 0 1], & बी सच या गलत है? मुझे MATLAB के & के नियम याद नहीं हैं, क्या आप कर सकते हैं? ज्यादातर लोग नहीं कर सकते हैं। दूसरी ओर, यदि आप & & या || का उपयोग करते हैं, तो आपको स्थिति को हल करने के लिए "पूर्ण में" कोड लिखने के लिए मजबूर किया जाता है।
ऐसा करने से, बल्कि & और में वैक्टर की MATLAB के संकल्प पर निर्भर रहने के |, कोड थोड़ा और अधिक वर्बोज़ है कि की ओर जाता है, लेकिन एक बहुत सुरक्षित है और बनाए रखने के लिए आसान।
+1, लेकिन यह ध्यान दिया जाना चाहिए कि आपका उत्तर केवल उन मामलों पर लागू होता है जहां आप ** चाहते हैं ** ऑपरेशन का अंतिम परिणाम स्केलर होने के लिए।& & | के लिए कई उपयोग हैं कहां && और || बेकार हैं क्योंकि वे सरणी वापस नहीं कर सकते हैं, उदाहरण के लिए जब फैंसी इंडेक्सिंग करते हैं जैसे "1 और 2 के बीच सभी आर का चयन करना: 'आर ((आर <2) और (आर <2))"। –
अच्छा बिंदु, जोनास। जब मैंने यह लिखा था, तो मैं सशर्त के बारे में सोच रहा था, "लॉजिकल इंडेक्सिंग" नहीं, "आपके द्वारा वर्णित" फैंसी इंडेक्सिंग "के लिए MATLAB शब्द)। मैंने इसे प्रतिबिंबित करने के लिए अपनी पोस्ट की पहली वाक्य बदल दी। याद दिलाने के लिए शुक्रिया! –
- 1. Matlab में सेल और मैट्रिक्स के बीच क्या अंतर है?
- 2. के बीच क्या अंतर है?
- 3. MATLAB के अंक और लंबाई कार्यों के बीच अंतर
- 4. MATLAB में एक स्क्रिप्ट और फ़ंक्शन के बीच क्या अंतर है?
- 5. ओरिएंटब संस्करणों के बीच क्या अंतर है?
- 6. # {} $ {} और% {} के बीच क्या अंतर है?
- 7. के बीच क्या अंतर है:। और: आर !?
- 8. इन कार्यों के बीच क्या अंतर है?
- 9. एन्कोड/डीकोड के बीच क्या अंतर है?
- 10. window.innerWidth window.outerWidth के बीच क्या अंतर है?
- 11. () बनाम [] बनाम {} के बीच क्या अंतर है?
- 12. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 13. os.popen() विधियों के बीच क्या अंतर है?
- 14. System.Linq.Enumerable.WhereListIterator & System.Linq.Enumerable.WhereSelectListIterator के बीच क्या अंतर है?
- 15. इन कार्यों के बीच क्या अंतर है
- 16. अभिव्यक्तियों के बीच उन PHP के बीच क्या अंतर है?
- 17. $ और $$ के बीच क्या अंतर है?
- 18. Response.Write() औरResponse.Output.Write() के बीच क्या अंतर है?
- 19. applicationDidReceiveMemoryWarning, didReceiveMemoryWarning के बीच क्या अंतर है?
- 20. भिन्नता और '-' के बीच क्या अंतर है?
- 21. "$^एन" और "$ +" के बीच क्या अंतर है?
- 22. इन अंतर कैश-नियंत्रण पैरा के बीच क्या अंतर है?
- 23. अंतर और कहां के बीच क्या अंतर है?
- 24. WinAPI में हैंडल और एचएफआईएलई के बीच क्या अंतर है?
- 25. सिम्फनी में रीडायरेक्ट और आगे के बीच क्या अंतर है?
- 26. PHP में iconv() और mb_convert_encoding() के बीच क्या अंतर है?
- 27. वेरिलोग में $ स्टॉप और $ फिनिश के बीच क्या अंतर है?
- 28. ember.js में, मिश्रण और विस्तार के बीच क्या अंतर है?
- 29. पर्ल में 'eq' और '= ~' के बीच क्या अंतर है?
- 30. गेब में, प्रदर्शित और वर्तमान के बीच क्या अंतर है?
चेतावनी पर: '&' सरणी पर काम कर सकता है लेकिन '&&' केवल स्केलर पर ही काम कर सकता है। – gnovice
साइड नोट: मैटलैब के साथ काम करने के 15 साल बाद लगभग हर दिन मैं हमेशा 'और' का उपयोग करता हूं और उसने कभी मुझे गधे में काट नहीं दिया है। ओटीओएच, मैं कई लोगों को जानता हूं जो '&&' का उपयोग करके नाराज हो जाते हैं क्योंकि उन्हें याद रखना है कि यह सार्वभौमिक नहीं है (हाँ मुझे एहसास है कि 'और' उतना कुशल नहीं है क्योंकि यह शॉर्ट सर्किट नहीं करता है लेकिन मैं काफी ज्यादा डेज़ी नहीं करता हूं- मेरे ऑपरेटरों को चेन करें ताकि बचत आजकल नगण्य हो)। – neuronet
@neuronet यह वास्तव में दक्षता के बारे में नहीं है, और यह कि वह उस निर्माण की अनुमति देता है जहां पहली अभिव्यक्ति ऐसी स्थिति की गारंटी देती है जिसके बिना दूसरी अभिव्यक्ति रन-टाइम त्रुटि उत्पन्न कर सकती है। जैसे 'डी! = 0 और 1/डी' बनाम डी! = 0 और 1/डी' - पहली गारंटी शून्य से कोई विभाजन नहीं है, दूसरा नहीं है। – Fraser