这个运算顺序是怎么样的,*和++是同一优先级的吧,而且是右结合

图片说明

返回的是自增以前的值,然后指针自增。
相当于
p->str ...
p = p++;

结合你昨天的问题来说,写程序的根本价值是让人理解程序,或者用人理解的方式写程序。因此并不是说,编译器能编译通过的代码,就是没问题的代码。
这种写代码所需要的准则如同交通规则,虽然看不见,但是确实存在。你不能因为汽车可以闯红灯就认为闯红灯是正常的。
编写含义模糊含混的代码,搞得“没有思路”,再画什么流程图,这不是很搞笑么

图片说明有什么问题吗?
先进行++,只不过+1是运行指针以后进行的

盆友 这种问题其实没有必要 因为真正编程的时候不会出现这种代码 可读性太差了
而且这种情况是由于优先级产生的 而优先级又是哪里来的呢 ?一部分 C标准有定义 还有就是实现的时候编译器的问题了
程序员的生命是如此的珍贵 在这个波澜壮阔的时代 更要把光阴用在有价值的地方 别钻牛角尖

相当于:

*(p->str);
p++;

p++是先用后加,++p是先加后用。