因为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。