*p++之后为什么先引用在加一

不是++的优先级高吗,而后在引用,为什么在编译出来,是先引用后++

你这个有点像i++和++i的区别。

char ch[] = "hello";
char* p = ch;
cout << *p++ << endl;

*和++优先级一样,所以的确是先执行p++,但是p++跟i++一样,是先执行完p当前操作,再执行++操作,就会导致先输出*p,也就是h先输出,然后执行++操作,p指针指向e,所以就算你加个括号变成*(p++),也还是一样的结果,先将p指向的当前值输出,然后后移。