Precedence of Operators in C Language

Precedence of Operators in C: “सी” भाषा में हर Operator का एक प्राथमिकता का क्रम होता है। जिससे गणनाओं में होने वाली परेशानियां समाप्त हो जाती हैं। उदाहरण के लिए निम्न Expression देखें:

11 + 23+20/6 – 4 = 5
11 + 23+20/6 – 4 = 27
11 + 23+20/6 – 4 = 33.333

जिस परिणाम की हमें जरूरत है, वह इनमें से कौनसा है, ये पता लगाना बहुत ही मुश्किल हो जाएगा क्योंकि तीनों ही मान सही हैं। ऐसे में एक ऐसे क्रम की आवश्‍यकता हुई, जिससे यह पता चल सके कि पहले कौनसी गणना होगी व बाद में कौनसी, ताकि हमें प्राप्त होने वाला मान वही हो जो हम चाहते हैं।

“सी” में इस प्रकार की परेशानी से बचने के लिए Operators को एक प्राथमिकता क्रम में व्‍यवस्थित किया गया। इसमें गणनाए इसी क्रम में होती हैं। जो Operator प्राथमिकता क्रम में पहले आता है, उसके Operands की गणना पहले होती है और जो Operator प्राथमिकता क्रम में बाद में आता है, उसके Operands की गणना बाद में होती है। ये प्राथमिकता क्रम सारणी निम्नानुसार है:

Category Operator Operations Precedence Associatively
Highest Precedence (  )
[  ]
->
.
Function Call
Array Subscript
Reference
Dot Operator
1 Left
To
Right
Unary !
~
+

++

&
*
sizeof
type
Logical Negation
Bit wise 1st complement
Unary Plus
Unary Minus
Increment
Decrement
Address
Indirection
Size of an Object
Type Cast Conversion
2 Right

To

Left

Multiplication *
/
%
Multiply
Divide
Reminder
3 Left

To

Right

Additive +
Binary Plus
Binary Minus
4 Left To
Right
Shift <<
>>
Shift Left
Shift Right
5 Left To
Right
Relational <
<=
>
>=
Less Than
Less Than or equal to
Greater Than
Greater Than or Equal to
6 Left
To
Right
Equality = =
!=
Equal To
Not Equal To
7 Left To
Right
Bit wise AND & Bit wise AND 8 L to R
Bit wise XOR ^ Bit wise XOR 9 L to R
Bit wise OR | Bit wise OR 10 L to R
Logical AND && Logical AND 11 L to R
Logical OR | | Logical OR 12 L to R
Conditional ? : Ternary Operator 13 L to R
Assignment =
*=
/=
%=
+=
– =
& =
^ =
| =
<<
>>
Simple Assignment
Assign Product
Assign Quotient
Assign Reminder
Assign Sum
Assign Difference
Assign Bit wise AND
Assign Bit wise XOR
Assign Bit wise OR
Assign Left Shift
Assign Right Shift
14 R TO L
Comma , Evaluate 15 L to R

Computer में जब किसी Arithmetical Expression Calculation के लिए Perform होता है, तब उस Expression में Use किए गए विभिन्न प्रकार के Operators अपने Direction व प्राथमिकता क्रम के अनुसार Execute होते हैं। कोई Expression जिस तरह से विभिन्न Steps में प्राथमिकता क्रम व Direction (Precedence and Associativity)  के आधार पर Perform होकर एक Result Generate करता है, उन Steps की श्रृंखला को Operations की Hierarchy (Hierarchy of Operations) कहते हैं।

कोई Expression किस क्रम व दिशा के आधार पर Execute होकर Accurate Result Generate करेगा, इसके लिए “C” Language में कुछ नियम निर्धारित किए गए हैं। ये नियम निम्नानुसार हैं:

  1. किसी Expression में यदि Parenthesis का प्रयोग किया गया हो, तो सबसे पहले उस Parenthesis का Expression Calculate होता है। साथ ही यदि एक से ज्‍यादा Parenthesis Nested हों, तो सबसे पहले Inner Most यानी सबसे अन्दर का Parenthesis Solve होता है और फिर क्रम से बाहर के Parenthesis Solve होते हैं।
  2. जो Operator प्राथमिकता क्रम की सारणी में पहले आता है, वह Operator अपना Calculation पहले करता है तथा जो Operator प्राथमिकता क्रम सारणी में बाद में आता है, वह अपना Operation बाद में Perform करता है। ठीक इसी तरह से सभी Operators उसी दिशा में Operations Perform करते हैं, जिस दिशा में उसे प्राथमिकता क्रम सारणी में दर्शाया गया है।

Example:

  x = (11 * 2) / 3 + 5 / 5 – 1 + 6 * 6 – 4 Expression
Step 1 x = (22 / 3) + 5 / 5 – 1 + 6 * 6 – 4 Operation *
Step 2 x = 7 + (5 / 5) – 1 + 6 * 6 – 4 Operation /
Step 3 x = 7 + 1 – 1 + (6 * 6) – 4 Operation /
Step 4 x = (7 + 1) – 1 + 36 – 4 Operation *
Step 5 x = (8 – 1) + 36 – 4 Operation +
Step 6 x = (7 + 36) – 4 Operation –
Step 7 x = (43 – 4) Operation +
Step 8 (x = 39) Operation –

किसी भी Arithmetical Expression में यदि *, / या % में से कोई Operator हो, तो सबसे पहले वही Operator अपना काम करता है। उसके बाद यदि Expression में + या – में से कोई Operator हो तो वह Operator अपना काम करता है और सबसे अन्त में = Operator अपना काम करता है। प्राथमिकता सारणी में हम देख सकते हैं कि केवल Unary Assignment Operators ही Right To Left Operation Perform करते हैं, शेष सभी Operators Left To Right दिशा में अपना काम करते हैं।

उदाहरण वाले Expression में हम देख सकते हैं कि इसमें विभिन्न प्रकार के Operators Result Generate करने के लिए Involved हैं। चूंकि, Unary Assignment Operators के अलावा सभी प्रकार के Operators Left To Right दिशा में Operation Perform करते हैं, इसलिए इस Expression सबसे पहले (11 * 2) का Expression Execute होता है, जो मान 22 Generate करता है।

अगले Step में (22 / 3) Expression Execute होता है, जो मान 7 Generate करता है। चूंकि इस Expression में अभी भी * व / Operators हैं, इसलिए अगले Statement में Left To Right चलते हुए जो Operator सबसे पहले मिलता है वह (5 / 5) Expression में होता है, इसलिए अब ये Expression Execute होता है।

फिर Left To Right आगे बढते हुए अगले Operation में (6 * 6) मिलता है, और अपना काम पूरा करके 36 Generate करता है। अब हम देख सकते हैं कि चौथे Step वाले Expression में *, / या % में से कोई भी Operator नहीं है, इसलिए फिर से Left To Right चलते हुए अब + व – का Expression Execute होता है और इस Expression में सबसे पहले (7 + 1) Execute होकर 8 Generate करता है। फिर पांचवे Statement में (8 – 1) से 7 Generate होता है। फिर छठे Step में (7 + 36) से 43 Generate होता है और सातवें Step में (43 – 4) से 39 Generate होता है।

चूंकि Assignment Operator सबसे बाद में Execute होता है और Right To Left Execute होता है, इसलिए अन्तिम Step में (x = 39) Expression Execute होता है और Variable x में मान 39 Store हो जाता है।

Control Statements in C Language
Type Casting in C : Automatic V/s Manual, Implicit V/s Explicit

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS