一道C语言输出问题,求帮,想了一整天了【哭】

img
请问,第一条printf语句(num1的那句)输出结果及过程,从右往左计算,从左往右输出的过程!!
我想了一天了都没想出来…【哭】

先执行一遍,再梳理
从右向左计算
首先num1--,使得第四个数是-10,然后num1变为-11
然后执行num1++,使得第二个数是-11,然后num1变为-10
然后执行++num1,使得第一个数是-9,然后num1变为-9 (++num1是先对num1加1,再改变当前值,与num1++有区别)
以上处理完后,最终num1值为-9,所以第三个数就是-9了
至于格式化中的%d,%o,%x和%u,只是输出效果分别为有符号整型,八进制整型,十六进制整型和无符号整型而已

是这样的,从右往左计算,从左往右输出的过程;这个是堆栈原理先进后出。

别想太多,想了也没啥用,不同的编译器可能得到不同的结果。

int num = -10;
printf("%d %d %d %d\n",++num,num++,num,num--);
在linux x86_64下得出结果如下(gcc编译器)
-9 -11 -11 -10