Precedence of Operator
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicNhnMcq6zL_PqHdUACch90EoGbPodi0UGdnhkHzCUyegV8tPoJCEIudeE7oWMR1pXHyiuSSvuz9lWIekjRac4Cx-QQv7MOH1dqMgsFS-Zap7rFOHtruDmiHcv3TNSNmlgNjFg_-IyavY/w640-h480/Precedence+of+Operator+.jpg)
Precedence of Operator
‘सी’ भाषा में हर
Operator
का एक प्राथमिकता का क्रम होता है |
जिससे
गणनाओं में होने वाली परेशानियां समाप्त हो जाती है |
उदाहरण
के लिए निम्न Expression देखें :
11+23+20/6 – 4 = 5
11+23+20/6 – 4 = 27
11+23+20/6 – 4 = 33.33
जिस परिणाम की
हमें जरुरत है , वह इनमें से कौन है , ये पता लगाना बहुत ही मुश्किल हो जाएगा
क्योंकि तीनों ही मान सही है | ऐसे
में एक ऐसे क्रम की आवश्यकता हुई , जिससे यह पता चल सके कि पहले कौनसी गणना होगी व
बाद में कौनसी , ताकि हमें प्राप्त होने वाला मान वही हो जो हम चाहते हैं |
“सी” में इस प्रकार की परेशानी से बचने के लिए Operator को एक प्राथमिकता क्रम में व्यवस्थित किया गया | इसमें गणनाएं इस क्रम में होती है उसके Operands की गणना पहले होती है और जो Operator प्राथमिकता क्रम में बाद में आता है , उसके Operands की गणन बाद में होती है | प्राथमिकता क्रम सारणी निम्नानुसार है |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1qnY81sTbGw81s20vAOQ6PCLmAf4J6rbqoy8EUIWcGWXQt231IInfTLdv_1cebzSwDwbdVJBvYLW7fnaPIn5MPfPEnwVm5Ygq76GBtpRbD7CjRBIb1KouUwUOSqQ8CgO7Ne6MVHNQeg8/w640-h626/Precedeno+of+Operator.jpg)
कोई 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 करते है , जिस दिशा में उसे प्राथमिकता क्रम सारणी में दर्शाया गया है |
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjReaEoS2MCv8MAyiVT8CgEpXFW9YOwaNmcj6ONI706tvTvqIuCpBVq_d4HO6fkS2ytA9_pZPt3hK31ohFR0ljCpcFyWvJPbcR3OA5wzQr7ooS0bxxqGPNVgaiehC0X2lW4Rw70YltUOq8/w640-h498/Operation+Perform.jpg)
किसी भी Arithmetical
Expression में यदि * ,/ या % में से कोई Operator हो , तो सबसे पहले वही Operator
अपना काम करता है | उसके
बाद यदि Expression
में + या – में से कोई Operator
हो तो वह Operator अपना काम करता है और सबसे
अंत में = Operator अपना काम करता है |
प्राथमिकता
सारणी में हम देख सकते है कि केवल Unary व Assignment
Operators ही Right To Left Operation Perform करते है , शेष सभी Operator Left To Right दिशा में
अपना काम करते है | उदाहरण
वाले Expression
में हम देख सकते है कि इसमें विभन्न प्रकार के Operators
Result Generate करने के लिए Involved है |
चुंकि
, Unary
व Assignment Operators के अलावा सभी प्रकार
कि Operators Left To Right दिशा में 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 होता है |
फिर
छठे 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 हो जाता है |
No comments