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 में कुछ नियम निर्धारित किए गए हैं। ये नियम निम्नानुसार हैं:
- किसी Expression में यदि Parenthesis का प्रयोग किया गया हो, तो सबसे पहले उस Parenthesis का Expression Calculate होता है। साथ ही यदि एक से ज्यादा Parenthesis Nested हों, तो सबसे पहले Inner Most यानी सबसे अन्दर का Parenthesis Solve होता है और फिर क्रम से बाहर के Parenthesis Solve होते हैं।
- जो 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 हो जाता है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF