为什么输出的值是788
不应该是776吗?
如果最后的a++改成a--呢?
printf函数压栈的顺序是从右往左,输出顺序是从左到右。
图中代码的执行顺序是:
(1)a的初始值是5,a入栈(此时a=5);
(2)先执行最右侧的++a:a出栈,执行a++,a变成6,a入栈(此时a=6)
(3)执行中间的++a:a出栈,执行a++,a变成7,a入栈(此时a=7)
(4)执行左侧的a++,因为a++是后置++,先执行printf输出后再++,所以,a先出栈,执行printf,输出7 ,然后a++,a变成8,a入栈(此时a=8)。
然后再执行printf输出后面的两个a,此时栈中a的值是8,所以后面输出的是两个8
所以,最后的输出结果是 7 8 8
需要注意的是a++和++a的执行顺序是不一样的!!