An arithmetic expression is a combination of variables, constants, and arithmetic operators. Arithmetic operators supported in C are +
, 
, *
, /
and %
. The operands include integer and floatingtype numbers. Some algebraic expressions and their corresponding C expressions are given in the following table.
Algebraic Expression  C Expression 


(a + b) * (ab) 

(a * b) / c 

2 * x * x + 3 * x 
Arithmetic expressions are evaluated using an assignment statement of the form variable = expression
. The expression is evaluated first and the value is assigned to the variable. An example of an evaluation statement is, c = a  b / d + e
Precedence of Arithmetic Operators in C
To determine the meaning and value of an expression in an unambiguous manner, we apply the operator precedence and associativity rules. Arithmetic expressions without parentheses are evaluated from left to right using the rules of operator precedence. In C, arithmetic operators have two different priority levels.
 Hight priority
* / %
 Low priority
+ 
The basic procedure for evaluating an expression includes two passes from left to right. The high priority operators are applied during the first pass and the low priority operators are applied in the second pass.
For example, the statement x = 8 – 15 / 5 + 2 * 5 – 7 is evaluated as follows,
 First pass
x = 8  5 + 2 * 5 7
x = 8  5 + 10  7
 Second pass
x = 3 + 10  7
x = 13  7
x = 6
These steps are illustrated in the following figure.
However, parentheses can be used to change the order in which an expression is evaluated. The expression within parentheses assumes the highest priority. The following rules are used for evaluating expressions containing parentheses.
 Parenthesized subexpressions are evaluated from left to right.
 When there are nested parentheses, the evaluation starts with the innermost subexpression.
 The order of application of operators in evaluating subexpressions is determined using the precedence rule.
 When two or more operators with the same precedence level exist in a subexpression, the associativity rule is applied.
 Arithmetic expressions are evaluated from left to right using the rules of precedence.
 The expressions within parentheses assume the highest priority.
For example, the statement x = 8 – 14 / (5 + 2) * (8 – 7) is evaluated as follows,
 First pass
x = 8  14 / 7 * (8 7)
x = 8  14 / 7 * 1
 Second pass
x = 8  2 * 1
x = 8  2
 Third pass
x = 6
Operator Precedence and Associativity in C
The following table shows the complete list of C operators, their precedence levels, and their rules of association.
Operator  Description  Associativity  Rank 

()  Function call  Left to right  1 
[]  Array element reference  
+  Unary plus  Right to left  2 
–  Unary minus  
++  Increment  
—  Decrement  
!  Logical negation  
~  Ones complement  
*  Pointer reference  
&  Address  
sizeof  Size of an object  
(type)  Type cast (conversion)  
*  Multiplication  Left to right  3 
/  Division  
%  Modulus  
+  Addition  Left to right  4 
–  Subtraction  
<<  Left shift  Left to right  5 
>>  Right shift  
<  Less than  Left to right  6 
<=  Less than or equal to  
>  Greater than  
>=  Greater than or equal to  
==  Equality  Left to right  7 
!=  Inequality  
&  Bitwise AND  Left to right  8 
^  Bitwise XOR  Left to right  9 
  Bitwise OR  Left to right  10 
&&  Logical AND  Left to right  11 
  Logical OR  Left to right  12 
?:  Conditional operator  Right to left  13 
=  Assignment operator  Right to left  14 
,  Comma operator  Left to right  15 