1 优先级
后置++和--大于前置++和--
*比这都小
结合都是右结合
1.1 左右结合
就是好几个同一优先级的,等于右边的加个括号
2 例子
2.1 *p++
=是右结合
a=b=c
相当于
a=(b=c)
int a[3]={1,2,3};
int *p=a;
cout<<*p++<<endl;//结果为1
cout<<*p<<endl;//结果为2
*p++相当于*(p++),但是由于后置++将自增前的原始副本作为右值返回,因此*p++还是对自增前的p解引用
注意:后置++也就不可以作为左值了,a++=b,是错的
2.2 *++p
由于右结合,*++p相当于*(++p),且前置++返回的是对象本身,这里也就是自增过后的本身
注意:前置++可以作为左值,++a=b,是对的
2.3 (*p)++和++(*p)一样的
就是先解引用再自增
2.4 ++*p
由于前置++和*优先级一样,且是右结合,所以相当于++(*p)