关于a++出现了一些问题
int main()
{
int a=10;
printf("%d %d %d",a,a++,a++);
return 0;
}
为啥输出12 11 10,
正常理解应该正向输出1 2 3,如果说a++先用后累加,那第一个输出也应该是10,所以还是不懂
printf()使用时从右向左压栈,也就是说在printf("%d %d %d",a,a++,a++);中,依次从右向左开始计算,计算完后才会往%d中输出
右侧a++,先是a入栈,然后a++,栈中元素是10(对应最右侧的%d),a变成11
中间a++,先是a入栈,然后a++,栈中元素是11(对应中间的%d),a变成12
左侧a,a入栈,a是12(对应左侧的%d)
压栈完毕后%d从左到右依次出栈显示,就是12 11 10
因为都是后置++,所以是先入栈再执行++操作,栈是先进后出
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!