Operator Precedence and Associativity in C in Hindi

 

The solution to the problem in any program is written as expressions (like sum = n1 + n2, avg = (n1 + n2 + n3) / 3 etc.). These expressions are composed of operators and operands (variable / constant). These expressions can be simple expressions of with single operator or a complex expression with more than one operator. When an expression is made up of more than one operators then it is necessary to determine which operation will be in place before or in what order all operations will take place. For this, operator precedence rules and associativity are used in C-language. The precedence and associativity of some of the key operators in the C language are as follows:

किसी भी प्रोग्राम में समस्या के हल को expressions (जैसे— sum=n1+n2, avg=(n1+n2+n3)/3 etc.) के रूप में लिखा जाता है। इन expressions का निर्माण operators व operands (variable/constant) से मिलकर होता है। ये expression एक operator वाले साधारण expression हो सकते है या एक से अधिक operator वाले जटिल expression भी हो सकते है। जब कोई expression एक से अधिक operator से मिलकर बनता है तो इसमें कौन सा operation पहले होगा या सारे operation किस क्रम में होगें यह निर्धारित करना जरूरी हो जाता है। इसके लिए C-Language में operator precedence rules and associativity का प्रयोग किया जाता है। C Language में कुछ महत्वपूर्ण operators का precedence and associativity निम्नलिखित है—

 

Operator Precedence Associativity
* / % 1 Left to Right
+ – 2 Left to Right
< <= > >= 3 Left to Right
== != 4 Left to Right
&& 5 Left to Right
|| 6 Left to Right
= 7 Right to Left

 

Thus, whenever the operators in the expression are different precedence, then the order of evaluation is determined by their precedence. That is, those whose precedence are high evaluate (execute) first. For example, the result of expression 5 + 4 * 2 would be 13 because as per precedence rule a multiplication will happen first then addition.

इस प्रकार जब भी expression में operator अलग-अलग precedence के होते है तो उनका evaluation (execution) का क्रम उनके precedence से निर्धारित किया जाता है। अर्थात् जिनका precedence पहले होता है वे ही पहले evaluate (execute) होते है। उदाहरण के लिए expression 5+4*2 का परिणाम 13 होगा क्योकि precedence rule के अनुसार पहले गुणा होगा फिर योग।

But when the operators in expression are of same precedence, the order of their evaluation (execution) is determined by their associativity. That is, operators whose associativity is left to right should have their left operand unambiguous and operators whose associativity is right to left should have their right operand unambiguous. Being unambiguous here means that it should be absolutely clear. For example, the result of expression of 8/2 * 5 would be 20 because as per associativity rule, a division will happen first then multiplication.

किन्तु जब expression में operator एक ही precedence के होते है तो उनके evaluation (execution) का क्रम उनके associativity से निर्धारित किया जाता है। अर्थात् जिन operators की associativity left to right होती है उनका left operand unambiguous होना चाहिए तथा  जिन operators की associativity right to left होती है उनका right operand unambiguous होना चाहिए। यहा unambiguous होने का अर्थ है कि वह बिलकुल स्पष्ट होना चाहिए। उदाहरण के लिए expression 8/2*5 का परिणाम 20 होगा क्योंकि associativity rule के अनुसार पहले भाग होगा फिर गुणा होगा।

Finally, if we have to change the order of evaluation (execution) of an operation then it can also be done. For this, using parenthesis () we can determine the first of any operation. We should always use parenthesis () when writing expression because it is rather easy remembering precedence rule or associativity rule. For example, the result of expression (1 + 9) / (3-1) would be 5 because the operation inside parenthesis () will happen first then its outside.

अंत में यदि हमें किसी operation के evaluation (execution) क्रम को परिवर्तित करना है तो यह भी किया किया जा सकता है। इसके लिए parenthesis ( ) का प्रयोग कर हम किसी भी operation के पहले होने का निर्धारण कर सकते है। हमें expression लिखते समय सदैव parenthesis ( ) का प्रयोग करना चाहिए क्योंकि इसका प्रयोग करना precedence rule या associativity rule को याद रखने के मुकाबले बहुत आसान होता है। उदाहरण के लिए expression (1+9) / (3-1) का परिणाम 5 होगा क्योकि इसमें parenthesis ( ) के अंदर के operation पहले होंगे फिर उसके बाहर के।

 

Published by

admin

I am a computer teacher, programmer and web developer