C的小问题~~求教
#include<stdio.h>
main()
{
int arr[] = {6,7,8,9};
int *p = arr;
*(p++) = 123;
printf(%d,%d\n,*p,*(++p));
}
输出正确结果是8,8 ,可我不明白为什么是这个??求解。。
[解决办法]
main()
{
int arr[] = {6,7,8,9};
int *p = arr;//p此时指向arr[0]
*(p++) = 123;//运行后arr[0] = 123, p = &arr[1]
printf(%d,%d\n,*p,*(++p));//传参时从右向左,所以先执行*(++p),p == &arr[2] , *p == 8
}
其实这个答案不是一定的,结果是8,8,就说明了printf参数传递时从右向左,但是这个顺序不是一定的