int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, ten}, *p = a;printf ("------------right + +-----------\ n");p rintf ("*p =%d\n", *p);p rintf ("pointer P Address:%d\n ", p);p rintf (" *p++ =%d\n ", *p++);p rintf (" Pointer p address:%d\n ", p);p rintf (" (*p) + + =%d\n ", (*p) + +);p rintf (" Pointer p address:%d\n ", P);p rintf ("* (p++) =%d\n", * (p++));p rintf ("Pointer p address:%d\n", p);p rintf ("------------left + +----------\ n");p rintf ("*p =%d\n", *P);p rintf ("Pointer p address:%d\n", p);p rintf ("*++p =%d\n", *++p);p rintf ("Pointer p address:%d\n", p);p rintf ("(*++p) =%d\n", (*++p));p rintf ("Pointer p address:%d\n", p);p rintf ("* (++p) =%d\n", * (++p));p rintf ("Pointer p address:%d\n", p);
Sum up:
*p++ is to remove the *p value first, and then let p++
(*p) + + is the first to remove the value of *p, let this value + +
* (p++) is to remove the value of *p first, let p++
So, *p++ is equivalent to * (p++)
and printf runs in the right-to-left order. And Right + + is done in the entire operation expression, and the right + + execution order is left to right. and Left + + encounters the variable will immediately increase the value of the variable.
X and () and + + and--