我无法弄清楚我得到输出的原因: -
int ar[5] = {1, 3, 5, 7, 9};
int *p = ar;
printf("%d\t%d\n", *p, *(p++));
输出:3 1
但我预料到: 1 3 因为p指向第一个元素而p ++指向第二个元素。
答案 0 :(得分:7)
未指定函数参数的评估顺序。
答案 1 :(得分:0)
从右到左评估的顺序首先评估*(p ++)并增加地址然后评估现在指向下一个元素的* p。尝试*(p + 1)而不是它。
答案 2 :(得分:0)
这给出了一个很好的例子,说明了函数参数的评估顺序 没有被授予。