Do different C compilers have different argument passing rules? -
this question has answer here: why these constructs (using ++) undefined behavior? 12 answers #include<stdio.h> int main(void) { int a=10; printf("%d, %d, %d\n", a, a++, ++a); return 0; } this showing 12 11 12 in 32 bit gcc compiler , 12 11 11 in 16 bit turbo c compiler. differecnt c compilers have different argument passing rules? please read comp.lang.c faq , expressions. q: under compiler, code int = 7; printf("%d\n", i++ * i++); prints 49. regardless of order of evaluation, shouldn't print 56?