从上例中我们可以看到。当 * (作为地址解析符) 和 ++ 同时作用在指针时,不管是前置还是++,都要比*有更高的优先级。比如代码中的:
int A = *parr++;
我们来一个反证:假设*的优先级比++高,那么,应先计算:
*parr 结果为: 1 (第一个元素)
然后计算 1++ ,结果为:2。
但实验发现结果为 1,这个1 又是如何来的呢?有点复杂。
首先,++优先计算,所以应先计算:parr++ 。
结果是parr指向了下一个元素:2。因为这是后置++,所以,它必须返回自己计算之前的值;所以,在改变parr之前,编译程序会生成一个临时变量,计算原先parr的值。我们假设为 old_parr 。下面是第二步操作: