我们来看看如下C语言程序,看看输出是不是你想象那样的。
#include <stdio.h>
int main(){
int a[]={1,2,3,4,5};
int *p=a;
printf("%d,%d,%d,%d,%d,%d,%d",*p,*(++p),(*p)++,*p,*p--,(*p),*p);
return 0;
}
结果如下
明显出错了,那是因为越界了,按我们的平常想法应该不会这样的吧,但是事实是这样。
后面才知道printf输出是应该从右往左的,而不是我们理所应当的从左往右进行运行输出的。所以才出现这样的结果