#include #include int main(int argc, char *argv[]) { int *a = malloc(sizeof(int) * 3); int *ta = a; int b = 3; int c = 4; a[0] = 1; a[1] = 2; a[2] = 3; *a = *(a++) * b; printf("a[-1] %d a[0] %d a[1] %d\n", a[-1], a[0], a[1] ); printf("Shows that a++ occurs after the assignment\n\n"); a = ta; a[0] = 1; a[1] = 2; a[2] = 3; *a = *(++a) * c; printf("a[-1] %d a[0] %d a[1] %d\n", a[-1], a[0], a[1] ); printf("Shows that ++a occurs before accessing the value referenced by a\n\n"); a = ta; a[0] = 1; a[1] = 2; a[2] = 3; *a = *(a++) * b + *(++a) * c; printf("a[-2] %d a[-1] %d a[0] %d a[1] %d a[2] %d\n", a[-2], a[-1], a[0], a[1], a[2]); printf("Shows that the first access to a is before any modification\n"); printf(" the second access to a is after ++a\n"); printf(" the assignment takes place before the post-increment\n\n"); return(0); }