Приоритет:
приоритет ++ и * имеет одинаковый приоритет, а операции выполняются справа налево.
Postfix++ имеет более высокий приоритет, чем *, и вычисляется слева направо, но postfix++ все равно необходимо дождаться завершения операции выражения перед ++.
Различные ++ и *
#include <iostream>
using namespace std;
int main()
{
int arrays[]{
12,34,32,69,43};
int * p=arrays;
//从右向左进行,先++,再取值,就是34
cout<<"*++p: "<<*++p<<endl;
//从右向左进行,先取值,再++,就是将arrays[1]变成35
cout<<"++*p: "<<++*p<<endl;
//后置++优先级高但是要表达式结束后再++,就是先取值再++
//由于优先级的作用,这里++不是对取值之后的*p,而是对p进行++,指针下移
cout<<"*p++: "<<*p++<<endl;
//和上面的那个式子一样,就是先取值,再++指针下移,
cout<<"*(p++): "<<*(p++)<<endl;
//括号括住的优先级最高,先取值再++,将array[3]变成70,但是输出结果还是69
cout<<"(*p)++: "<<(*p)++<<endl;
cout<<"*p:"<<*p<<endl;
return 0;
}
Выход:
*++p: 34
++*p: 35
*p++: 35
*(p++): 32
(*p)++: 69
*p:70