1 #include <stdio.h>
2
3 int _tmain(int argc, _TCHAR* argv[])
4 {
5 int x[] = {10, 20, 30};
6 int *px = x;
7
8 printf("%d,", ++*px); //同优先级 自右向左结合 相当于++(*px)
9 printf("%d\n", *px); //自加了1
10
11 px = x;
12 printf("%d,", (*px)++);
13 printf("%d\n", *px);
14
15 px = x;
16 printf("%d,", *px++);
17 printf("%d\n", *px);
18
19 px = x;
20 printf("%d,", *++px);
21 printf("%d\n", *px);
22 return 0;
23 }
答案: printf("%d,", ++*px); //同优先级 自右向左结合 相当于++(*px) 所以结果为11
printf("%d\n", *px); //上面自加了1 所以结果为 11
printf("%d,", (*px)++); // ++ 在后面 优先级 比放前面要高 且为自左向右结合方式 结果仍为 11
printf("%d\n", *px); // 结果为12
printf("%d,", *px++); //++在后面 优先级高于 * 相当于 *(px++) 指针加 1 加了 4个字节 指向了 数组的第二个元素 即 20 但这是下一次输出的结果 本次输出依然为12
printf("%d\n", *px); //输出20
printf("%d,", *++px); //优先级 相同 自右向左结合 相当于*(++px) 开始px = x 指向了第一个元素 指针+1后指向数组中第二个元素 20
printf("%d\n", *px); //只是输出而已