Code:
{
  int a =2,b=2,c=0;
  c = a+(b++);
  printf("output:c=%d\tb=%d\n",c,b);
}
Output:
output: c=4      b=3
How output of c = 4 here, My understanding is c=5, can any one explain it please?
{
  int a =2,b=2,c=0;
  c = a+(b++);
  printf("output:c=%d\tb=%d\n",c,b);
}
output: c=4      b=3
How output of c = 4 here, My understanding is c=5, can any one explain it please?
 
    
     
    
    Because there is a difference between ++i and i++!
Prefix/ Postfix
++i  // `Prefix` gets incremented `before` it get's used (e.g. in a operation)
i++  // `Postfix` gets incremented `after` it get's used (e.g. in a operation)
So that's why c is 4!
If you change b++ to ++b then c gets 5!
See also:
What is the difference between prefix and postfix operators?
I don't think b++ is quite doing what you think it is. c = a+(b++) says "c equals a plus b then increment b by one", therefore c will be 4. If you use ++b instead, b will be incremented before the addition and c will be 5.
c = a+(b++); // c = 4
c = a+(++b); // c = 5
After each of these lines b will be 3, the only thing that changes between them is when b becomes 3.
