首先我们看符号的优先级:
后缀递增=后缀递减(结合顺序:从左到右)
大于
前缀递增=前缀递减=解除占用符*(结合顺序:从右到左)
那么对于以下代码:
#include<iostream>
using namespace std;
int main(){
int num[5]={1,3,5,7,9};
int *p=&num[2];
int *q=&num[2];
cout<<"The array is: ";
for(int i=0;i<5;i++) cout<<num[i]<<" ";
cout<<endl;
cout<<"First time the value of p & q is: \n"<<"p is: "<<*p<<"\nq is: "<<*q<<endl;
*++p;
++*q;
cout<<"After do *++p, p is: "<<*p;
cout<<"\nAfter do ++*q, q is : "<<*q;
cout<<"\nThe array is: ";
for(int i=0;i<5;i++) cout<<num[i]<<" ";
int k=*p++;
cout<<"\nDo k=*p++, k is: "<<k<<endl;
cout<<"After do *p++, p is: "<<*p;
return 0;
}
可以了解这一过程。
另附运行结果:
The array is: 1 3 5 7 9
First time the value of p & q is:
p is: 5
q is: 5
After do *++p, p is: 7
After do ++*q, q is : 6
The array is: 1 3 6 7 9
Do k=*p++, k is: 7
After do *p++, p is: 9
则可以具体了解递增/递减符号与解除占用符号的关系。