top of page

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

अपडेट करने की तारीख: 17 नव॰ 2021


C Tutorial - C Precedence And Associativity Of Operators | Creative Bloke

इस ट्यूटोरियल में, आप उदाहरणों की सहायता से ऑपरेटरों की प्राथमिकता और संबद्धता या सहचर्यता के बारे में जानेंगे।


Operator Precedence ( प्रथमता ऑपरेटर )

"एक ही एक्सप्रेशन में आने वाले बहुत से ऑपरेटर को उनके प्राथमिकता के आधार पर एक्जिक्यूट करना ऑपरेटर प्रेसीडेंसी ( प्रथमता ) कहलाता हैं।"


ऑपरेटरों की प्राथमिकता यह निर्धारित करती है कि एक्सप्रेशन में एक से अधिक ऑपरेटर होने पर कौन सा ऑपरेटर पहले निष्पादित किया जाता है।


चलिए, हम एक उदाहरण पर विचार करते हैं:

int x = 5 - 17 * 6;

C में, * की प्रेसीडेंसी - और = से अधिक है। इसलिए, पहले 17 * 6 का मूल्यांकन किया जाता है। फिर शामिल एक्सप्रेशन - का मूल्यांकन - की प्राथमिकता के रूप में किया जाता है, जो = की तुलना में अधिक है।

C Tutorial - What Operator Precedence And Associativity? | Creative Bloke

सी ऑपरेटर प्रीसेडेंस के आधार पर एक संख्यात्मक एक्सप्रेशन (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) हैं।

C Tutorial - What Is Operator Precedence And Associativity? | Creative Bloke

ऑपरेटरों की एसोसिएटिविटी उस दिशा को निर्धारित करती है जिसमें एक एक्सप्रेशन का मूल्यांकन किया जाता है।


For Example;

b = a;

यहां, a का मान b को सौंपा गया है, न कि दूसरी तरफ। ऐसा इसलिए है क्योंकि = ऑपरेटर की एसोसिएटिविटी दाएं से बाएं है।


इसके अलावा, यदि एक ही प्रेसीडेंसी (प्राथमिकता) के दो ऑपरेटर मौजूद हैं, तो एसोसिएटिविटी उस दिशा को निर्धारित करती है जिसमें वे निष्पादित होते हैं।


For Example;

1 == 2 != 3

यहां, ऑपरेटरों == और != की समान प्रेसीडेंसी ( प्राथमिकता ) है। और, उनकी एसोसिएटिविटी बाएँ से दाएँ होती है। इसलिए, 1 == 2 को पहले निष्पादित किया जाता है।


उपरोक्त एक्सप्रेशन इसके बराबर है;

(1 == 2) != 3

Table 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


टिप्पणियां


bottom of page