2009-05-30 12 views
61

सहयोगीता (ऑपरेटर के लिए) क्या है और यह महत्वपूर्ण क्यों है?ऑपरेटरों की साझेदारी क्या है और यह क्यों महत्वपूर्ण है?

अपडेट किया गया: ऑपरेटर संबद्धता

+2

किस तरह की सहयोगीता? ऑपरेटर सहयोगीता? – Ikke

+1

-1: अस्पष्ट। संदर्भ के बारे में कोई संकेत या आप किस बारे में जानना चाहते हैं? –

+16

@ नील बटरवर्थ - यह उचित प्रश्न की तरह दिखने के लिए एक विशेष रूप से कठोर टिप्पणी है। साइट का पूरा बिंदु सभी प्रोग्रामिंग ज्ञान के लिए एक केंद्रीय भंडार होना है जिसमें प्रारंभिक ग्रंथों में शामिल चीजें शामिल हैं। जैसा कि आप @ जियान लिन पर अपनी टिप्पणी का जवाब देते हैं, यह भी आधिकारिक एफएक्यू के पहले प्रश्न में निर्धारित स्वीकार्य है। आपके प्रतिनिधि स्तर के साथ किसी को बेहतर पता होना चाहिए। यदि आप इसके साथ असहमत हैं, तो कम से कम इसके बारे में नागरिक बनें। –

उत्तर

65

ऑपरेटरों के लिए, सहयोगीता का अर्थ है कि जब एक ही ऑपरेटर एक पंक्ति में दिखाई देता है, तो कौन सा ऑपरेटर अवसर हम पहले आवेदन करते हैं।निम्नलिखित में, Q ऑपरेटर

a Q b Q c 

तो Q बाईं साहचर्य है रहने दो, तो यह मूल्यांकन करता

(a Q b) Q c 

के रूप में और अगर यह सही साहचर्य है, तो यह मूल्यांकन करता

a Q (b Q c) 
के रूप में

यह महत्वपूर्ण है, क्योंकि यह अभिव्यक्ति के अर्थ को बदलता है। पूर्णांक गणित के साथ विभाजन ऑपरेटर, जो साहचर्य

4/2/3 <=> (4/2)/3 <=> 2/3  = 0 

यदि यह सही साहचर्य थे, यह एक अपरिभाषित अभिव्यक्ति का मूल्यांकन के बाद से आप शून्य

4/2/3 <=> 4/(2/3) <=> 4/0  = undefined 
+0

समझने के लिए बिल्कुल सही था क्या आप जानते हैं कि सहयोगीता कैसे प्राप्त करें दिया गया व्याकरण के लिए बाएं या दाएं है? – user2510115

+1

यदि व्याकरण के पास बाएं/दाएं रिकर्सिव उत्पादन नियम है। –

+0

उदाहरण के लिए 'expr -> expr + term;' को छोड़ दिया गया है और 'expr -> term + expr' सही सहयोगी है। –

2

मुझे लगता है आप ऑपरेटर संबद्धता मतलब ...

यह एक ऑपरेटर के लिए ऑपरेंड के बंधन के आदेश है। मूल रूप से:

एक - बी + सी

(यह मानते हुए - और + एक ही पूर्वता है) के रूप में मूल्यांकन किया जा सकता है:

((एक - ख) + स) या,
(एक - (बी + सी))

यदि ऑपरेटरों को सहयोगी छोड़ दिया जाता है (बाएं ऑपरेंड में तुरंत बांधें), तो इसका मूल्यांकन पहले के रूप में किया जाएगा। यदि वे सही सहयोगी हैं, तो इसका मूल्यांकन दूसरे के रूप में किया जाएगा।

The Associative property in mathematics

Order of Operations in programming languages

Associativity in CPU caches.

गणित में साहचर्य संपत्ति इस तरह के अतिरिक्त के रूप में ऑपरेटरों की एक संपत्ति (+) है:

7

संबद्धता का तीन प्रकार होते हैं। यह गुण है, तो आप एक बयान का मूल्य बदले बिना कोष्ठकों को पुनर्व्यवस्थित करने की अनुमति देता है अर्थात्:

(a + b) + c = a + (b + c) 

प्रोग्रामिंग भाषाओं, एक ऑपरेटर की संबद्धता (या स्थिरता) में एक संपत्ति तय करता है कि एक ही पूर्वता के ऑपरेटरों बांटा जाता है है में कोष्ठक की अनुपस्थिति में; यानी प्रत्येक ऑपरेटर का मूल्यांकन किस क्रम में किया जाता है। यह प्रोग्रामिंग भाषाओं के बीच भिन्न हो सकता है।

सीपीयू कैश में, सहयोगीता प्रदर्शन को अनुकूलित करने का एक तरीका है।

+0

* ऑपरेटर की सहयोगीता (या स्थिरता) एक ऐसी संपत्ति है जो निर्धारित करती है कि समान प्राथमिकता के ऑपरेटरों को कोष्ठक की अनुपस्थिति में कैसे समूहीकृत किया जाता है * - यह वाक्यांश मुझे –

1

आप ऑपरेटर संबद्धता मतलब हैं:

यह रास्ता भाव पार्स कर रहे हैं परिभाषित करता है। यह एक मानक देता है, इसलिए प्रत्येक अभिव्यक्ति को उसी तरह से पार्स किया जाता है।

यह उन परिचालनों के लिए अधिक महत्वपूर्ण है जिनके समान दुष्प्रभाव होते हैं, जब साइड इफेक्ट्स हो सकते हैं।

3

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

3 - 2 - 1 

के लिए अगर यह बाएं से दाएं है, तो यह

(3 - 2) - 1 

है और 0. है यदि यह दाईं से बाईं ओर है, तो यह

3 - (2 - 1) 

है और यह 2 है अधिकांश भाषाओं में, हम कहते हैं कि माइनस ऑपरेटर के पास दाएं सहयोगीता है।

+3

आप पहले से ही जवाब पता था, तो द्वारा सापेक्ष, तो क्यों आप सवाल पूछा? –

+2

यह नए लोगों की मदद करना था। मुझे लंबे समय से सी सीखना याद है और पता नहीं था कि बाद में सहयोगीता वास्तव में क्या थी। –

+3

मुझे संदेह है कि सी सीखने वाले अधिकांश लोग आपकी "सहायता" के बिना कर सकते हैं। –

4

यदि आप "ऑपरेटर सहयोगीता" का जिक्र कर रहे हैं - तो यह है कि एक भाषा निर्धारित करती है कि समान प्राथमिकता के ऑपरेटरों को कोष्ठक की अनुपस्थिति में कैसे समूहीकृत किया जाता है।

उदाहरण के लिए, सी-आधारित भाषाओं में + और - ऑपरेटरों की वही प्राथमिकता है। । जब आप एक अभिव्यक्ति (कोष्ठकों के बिना) उन दोनों का उपयोग करता है संकलक यह निर्धारित करना चाहिए कि क्या उन्हें में मूल्यांकन करने के लिए लिखने

आप लिखते हैं तो 12 - 5 + 3, संभव मूल्यांकन में शामिल हैं:

  1. (12 - 5) + 3 = 10
  2. 12 - (5 + 3) = 4

आपको में अभिव्यक्ति का मूल्यांकन के आधार पर, आप अलग अलग परिणाम प्राप्त कर सकते हैं। सी-आधारित भाषाओं में, + और - ने सहयोगीता छोड़ी है, जिसका अर्थ है कि ऊपर की अभिव्यक्ति पहले मामले के रूप में मूल्यांकन करेगी।

सभी भाषाओं में प्राथमिकता और सहयोगीता दोनों के लिए दृढ़ता से परिभाषित नियम हैं। आप यहां C# के नियमों के बारे में अधिक जान सकते हैं। ऑपरेटर associativity और precedence की सामान्य अवधारणाएं विकिपीडिया पर अच्छी तरह से कवर की गई हैं।

+0

यदि आपके सभी एक ही ऑपरेंड का उपयोग करते हैं तो आपके उदाहरण स्पष्ट होंगे। –

+0

क्या होगा यदि दो ऑपरेटर समान प्राथमिकता वाले अभिव्यक्ति में अभिव्यक्ति में दिखाई देते हैं, लेकिन उनमें से एक ने सहयोगीता छोड़ी थी और दूसरे के पास सही था? क्या यह सिर्फ उस सहयोगीता का उपयोग करेगा जिसकी पहली ऑपरेटर इसे पहले पाती है? – Hector

0

पिछले कुछ उदाहरणों में स्थिरांक का उपयोग किया गया है। यदि तर्क कार्य कॉल होने के लिए होता है, तो आपके कंपाइलर के पाठ्यक्रम के आधार पर कॉल किए गए आदेश को एसोसिएशन नियमों द्वारा निर्धारित किया जा सकता है। और यदि उन कार्यों के साइड इफेक्ट्स हैं ..

0

हम सभी जानते हैं कि प्राथमिकता महत्वपूर्ण है लेकिन अभिव्यक्ति के अर्थ की व्याख्या करने में सहयोगीता भी है।वास्तव में सरल परिचय के लिए Power of Operators आज़माएं।

2

सरल !! वाम एसोसिएटिव का अर्थ है कि हम अपनी अभिव्यक्ति का मूल्यांकन बाएं से दाएं हाथ से करते हैं।

दायां सहयोगी का अर्थ है कि हम अपनी अभिव्यक्ति का दाएं से बाएं हाथ से मूल्यांकन करते हैं।

हम जानते हैं *,/और% की समानता है, लेकिन सहयोगी उत्तर के अनुसार बदल सकता है।

उदाहरण के लिए: मैं exp: 4 * 8/2% 5

वाम साहचर्य: (4 * 8)/2% से 5 ==> (32/2)% 5 ==> 16 % 5 ==> 1

सही साहचर्य: 4 * 8/(2% 5) ==> 4 * (8/0) ==> अपरिभाषित व्यवहार

मुझे आशा है कि यह मदद मिलेगी। । ।

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