>> and then b is incremented 3 times. i.e, 4,5,6
Actually, if it worked as you thought it did (see laserlight's post), then the result would be,
3 * 4 * 5 = 60
Since it's post-increment, ie use the value and then increment. Still, not sure how you got 27 either, 4 * 5 * 6 = 120.
Such that,
Code:
int b = 3;
int stepOne = b++; /* = 3, THEN b is incremented, such that b = 4 */
int stepTwo = b++; /* = 4, THEN b is incremented, such that b = 5 */
int stepThree = b++; /* = 5, THEN b is incremented, such that b = 6 */
printf("%d,%d\n", (stepOne * stepTwo * stepThree), b);
Would output 60,6. Which is well defined behaviour, with several sequence points (one for each step).