/* please explain why always get a different out put does print f evaluate from right to left even though there some difference . Is there a procedence for ++a and a++ */ Code: #include <stdio.h> int main() { int a = 10; a= 10; printf("a a++ a ++a a %d %d %d %d %d\n" , a, a++, a, ++, a); a= 10; printf("a ++a a a++ a %d %d %d %d %d\n" , a, ++a, a ,a++, a); a= 10; printf("a ++a a ++a a %d %d %d %d %d\n" , a, ++a, a, ++a, a); a= 10; printf("a a++ a a++ a %d %d %d %d %d\n" , a, a++ ,a ,a++ ,a); a= 10; printf("a a++ a %d %d %d\n" , a, a++ a); a= 10; printf("a ++a a %d %d %d\n" , a, ++a a); a= 10; printf("a a++ a a++ a a++ a ++a a %d %d %d %d %d %d %d %d %d\n" \ , a, a++ ,a ,a++ ,a, a++ , a, ++a, a); return 0; }
All the compiler is required to do is update the operator at some point in execution; it may occur before the value is printed or after it's printed. Here's a great explanation of how the compiler handles it.