如图,为何输出是9 5?printf函数的参数规则是啥

img

因为c++代码从右往左执行顺序。
打印a的时候a还没加加。
打印a+3的时候,a已经是6了。

从右向左执行
打印a++是先打印a的值,所以是5,然后a再加1
你试着在下面再写个printf("%d",a); 此时a的值是6

printf()参数的传递是从右到左压入栈,所以从右边开始a++,此时拷贝a的值5 ,然后a+1=6,再执行左侧a+3得到9。所有运算完成,开始从左往右输出 9 5。