C语言 谁能解释一下这个问题

理论上a应该等于p,可是输出来就不是怎么回事了,但后面又等于了,请看图

img

__cdecl函数调用方式,从右到左入栈,所以从右到左计算。
你也可以代码参数全改成*p++,看是不是从右到左递增。

函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。
学习了

有没有一种可能,在单条语句中,这个编译器是从后往前编译执行的