Operator Precedence & Associativity - ऑपरेटर की प्रथमता और सहचर्यता
- _Romeyo Boy_

- 16 नव॰ 2021
- 3 मिनट पठन
अपडेट करने की तारीख: 17 नव॰ 2021

इस ट्यूटोरियल में, आप उदाहरणों की सहायता से ऑपरेटरों की प्राथमिकता और संबद्धता या सहचर्यता के बारे में जानेंगे।
Operator Precedence ( प्रथमता ऑपरेटर )
"एक ही एक्सप्रेशन में आने वाले बहुत से ऑपरेटर को उनके प्राथमिकता के आधार पर एक्जिक्यूट करना ऑपरेटर प्रेसीडेंसी ( प्रथमता ) कहलाता हैं।"
ऑपरेटरों की प्राथमिकता यह निर्धारित करती है कि एक्सप्रेशन में एक से अधिक ऑपरेटर होने पर कौन सा ऑपरेटर पहले निष्पादित किया जाता है।
चलिए, हम एक उदाहरण पर विचार करते हैं:
int x = 5 - 17 * 6;C में, * की प्रेसीडेंसी - और = से अधिक है। इसलिए, पहले 17 * 6 का मूल्यांकन किया जाता है। फिर शामिल एक्सप्रेशन - का मूल्यांकन - की प्राथमिकता के रूप में किया जाता है, जो = की तुलना में अधिक है।

सी ऑपरेटर प्रीसेडेंस के आधार पर एक संख्यात्मक एक्सप्रेशन (Numeric Expression) का मूल्यांकन (Evaluates) करता है।
+ और - प्रेसीडेंस में बराबर हैं, जैसे *, /, और % हैं। *, /, और % पहले बाएं से दाएं क्रम में और फिर + और -, बाएं से दाएं क्रम में भी किए जाते हैं। आप पैरेंथेसिस कोष्ठक ( ) का उपयोग करके संचालन के क्रम को बदल सकते हैं। यह इंगित करने के लिए कि कौन से संचालन पहले किए जाने हैं। उदाहरण के लिए, 5 + 3 * 2 का परिणाम 11 है, जहां (5 + 3) * 2 का परिणाम 16 है। For Example;
#include <stdio.h>
int main()
{
int a = 6;
int b = 4;
int c = 2;
int result;
result = a - b + c; // 4
printf("%d \n", result);
result = a + b / c; // 8
printf("%d \n", result);
result = (a + b) / c; // 5
print("%d \n", result);
return 0;
}♻️ Output;
4
8
5जब सहचार्य प्रॉपर्टी (Associative Property) किसी भी आदेश की अनुमति देती है, तो C वांछित के रूप में एक संख्यात्मक एक्सप्रेशन का मूल्यांकन नहीं कर सकता है। उदाहरण के लिए, x*y*z का मूल्यांकन ( x * y ) * z या x * ( y * z ) के रूप में किया जा सकता है। यदि आदेश महत्वपूर्ण है, तो एक्सप्रेशन को अलग-अलग कथनों (स्टैटमेंट्स) में विभाजित करें।
Operator Associativity ( ऑपरेटर सहचर्यता )
"एक ही प्राथमिकता वाले ऑपरेटर के समूह को उनके Right तथा Left अथवा Left से Right पोजीशन के आधार पर एक्जिक्यूट करने की प्रक्रिया ऑपरेटर एसोसिएटिविटी (सहाचर्यता) कहलाता हैं।" जैसे कि / (Divide), * (Multiplication) और % (Remainder या Modulus) एक ही प्राथमिकता के ऑपरेटर होते हैं। इनको उनके Left और Right पोजीशन के आधार पर एक्जिक्यूट किया जाएगा। For Example;
s = s + x;ऑपरेटर (+) कि संबद्धता या सहचर्यता बाएं (Left) से दाएं (Right) हैं।

ऑपरेटरों की एसोसिएटिविटी उस दिशा को निर्धारित करती है जिसमें एक एक्सप्रेशन का मूल्यांकन किया जाता है।
For Example;
b = a;यहां, a का मान b को सौंपा गया है, न कि दूसरी तरफ। ऐसा इसलिए है क्योंकि = ऑपरेटर की एसोसिएटिविटी दाएं से बाएं है।
इसके अलावा, यदि एक ही प्रेसीडेंसी (प्राथमिकता) के दो ऑपरेटर मौजूद हैं, तो एसोसिएटिविटी उस दिशा को निर्धारित करती है जिसमें वे निष्पादित होते हैं।
For Example;
1 == 2 != 3यहां, ऑपरेटरों == और != की समान प्रेसीडेंसी ( प्राथमिकता ) है। और, उनकी एसोसिएटिविटी बाएँ से दाएँ होती है। इसलिए, 1 == 2 को पहले निष्पादित किया जाता है।
उपरोक्त एक्सप्रेशन इसके बराबर है;
(1 == 2) != 3Table Of Operators Precedence & Associativity
ध्यान दें कि उच्च स्तर (Higher Level) के ऑपरेटरों को पहले निष्पादित किया जाएगा। जब ऑपरेटरों का स्तर समान होता है तो बाईं ओर (Left Side) वाले को पहले निष्पादित किया जाएगा।
Categories | Operator | Operation | Precedence | Associativity |
Highest Precedence | ( ) [ ] -> :: . | Function Call Array Subscript C Indirect Component Selector C Scope Access/Resolution C Direct Component Selector | 1 | L - R ( Left To Right ) |
Unary | ! ~ + - ++ - - & * sizeof (type) | Logical Negation (Not) Bitwise (1's) Component Unary Plus Unary Minus Increment Decrement Dereference (Address) Pointer reference or indirection Returns the size of an object Typecast (conversion) | 2 | R - L ( Right To Left ) |
Member Access | .* ->* | Dereference Dereference | 3 | Left To Right |
Multiplication | * / % | Multiply Divide Remainder (Modulus) | 4 | Left To Right |
Additive | + - | Binary Plus Binary Minus | 5 | Left To Right |
Shift | << >> | Shift Left Shift Right | 6 | Left To Right |
Relational | < <= > => | Less Than Less Than Or Equal To Greater Than Greater Than Or Equal To | 7 | Left To Right |
Equality | == != | Equal To Not Equal To | 8 | Left To Right |
Bitwise AND | & | Bitwise AND | 9 | Left To Right |
Bitwise XOR | ^ | Bitwise XOR | 10 | Left To Right |
Bitwise OR | ! | Bitwise OR | 11 | Left To Right |
Logical AND | && | Logical AND | 12 | Left To Right |
Logical OR | || | Logical OR | 13 | Left To Right |
Conditional | ? : | Conditional Operator (a?xy means "if a then x, else y") | 14 | Right To Left |
Assignment | = *= /= %= += -= &= ^= |= <<= >>= | Simple Assignment Assign Product Assign Quotient Assign Remainder (Modulus) Assign Sum Assign Difference Assign Bitwise AND Assign Bitwise XOR Assign Bitwise OR Assign Left Shift Assign Right Shift | 15 | Right To Left |
Comma | , | Evaluate | 16 | Left To Right |



_edited.jpg)
टिप्पणियां