Use of pre/post Increment operator in expression
In this example we will be learning very typical example of C Program where we will be using pre increment and post increment operators in same expression.
Re-commanded Reading : Increment Operator in C | Decrements Operator in C
Postfix and Prefix Expression in Same Statement
#include<stdio.h> #include<conio.h> void main() { int i = 0, j = 0; j = i++ + ++i; printf("%d\n", i); printf("%d\n", j); }
Output :
2 2
Explanation of Program
A picture worth 100 lines of text. Consider the below program picture which explains the above program.
j = i++ + ++i;
Above line of code have total four operators -
- Assignment Operator
- Post Increment Operator
- Pre Increment Operator
- Arithmetic Operator
Now we need to arrange all the operators in the decreasing order of the Precedence -
Operator | Precedence Rank |
Pre Increment | 1 |
Post Increment | 2 |
Arithmetic Operator | 3 |
Assignment Operator | 4 |
Now we have arranged all the operators in the decreasing order of the precedence. (Operator Precedence and Associativity Document)
Execution flow
- In the first step pre-increment operator gets an opportunity for execution. It will increment the value of variable
- In the second step post increment operator will be executed. It does not increment the actual value of variable but mark it as pending execution.
- Here pre-increment operation uses new Value of ‘i’ so [ i = 1 ].
- This ‘i = 1’ is used for Post Increment Operation which uses Old Value i.e [i = 1] .
- Both ‘1’s are added and value 2 is assigned to ‘j’.
Summary :
Step 1 : j = i++ + 1; Step 2 : j = 1 + 1; (post-increment pending on i) Step 3 : j = 2; (Addition) Step 4 : j = 2; (Assignment) Step 5 : Pending increment on i will be executed