C语言中指针的问题

看来有人提出求运行结果int a=2,*p=&a,*q=&a; printf("%d %d尀n",*p++,*(q++)); p=&a;q=&a; printf("%d %d尀n",*p,(*q)++); 我运行了结果为2 22 2如果结果正确,也就是说*p++和*(p++)是一回事的,只有(*p)++才能是a++的意思,不知道这么理解是否正确。
2026年09月19日 20:43
有2个网友回答
网友(1):

楼主完全正确
是这样的++的优先级比*高.
也就是说*p++和*(p++)是一回事的,
*q,*p代表a.所以(*p)++就代表a++

网友(2):

楼主说的没错!不过楼上的说错了!
*和++是一个级别的,++不比*高
C语言一元操作符是从右向左结合!所以二者等效
后面一个正确,没的说