前缀递增递减和*优先级相同,从右到左;
后缀递增递减比前缀优先级高,从左到右。
先看下面这段测试程序;
#include<stdio.h>
int main(void)
{
int arr[5]={1,5,10,15,20};
int *p=arr;
int a,b,c;
a=*p++;
printf("%d %d\n",a,*p);
b=(*p)++;
printf("%d %d\n",b,*p);
c=*(p++);
printf("%d %d\n",c,*p);
}
运行结果如下;
*p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1] 为5
(*p)++:先*p,即arr[1]=5,然后5+1,该语句执行完毕后arr[1] =6
*(p++):效果等同于*p++