*(p++)与*(++p)的问题
#include<stdio.h>main(){ int a[]={1,2,3,4,5}; int *p; p = a; p++; printf("%d,%d",*(p++),*p);}#include<stdio.h>main(){ int a[]={1,2,3,4,5}; int *p; p = a; p++; printf("%d,%d",*(++p),*p);} int a[]={1,2,3,4,5}; int *p; p = a; p++; int t1 = *p; //2 int t2 = *(++p); //3 printf("%d,%d", t2,t1); //3, 2
[解决办法]
你为什么不把函数参数顺序倒一倒再试试看呢?
其实,按标准来说,函数参数的求值顺序应该是不确定的,写依赖求值顺序的代码也是不可取的
[解决办法]
这不很明显嘛,printf("%d,%d",*(++p),*p)你要看成是一个表达式,其中的p是同一个