#include<iostream>
using namespace std;
int main(){
int a = 5;
printf("%d %d %d %d %d %d\n", a,a++,--a,a--,++a,a);
int b = 5;
printf("%d %d %d %d %d %d\n", b++,--b,b,++b,b--,b--);
int c = 5;
printf("%d %d %d %d %d %d\n", c,c,c,--c,--c,--c);
}
在初学C时很多人都会对printf不是很明白,对输出的结果表示无法理解,比如上面的输出就会让很多小伙伴摸不清头脑。
输出结果如下:
- 5 4 5 6 5 5
- 3 4 4 4 4 5
- 2 2 2 2 2 2
为什么会出现这样的结果,我通过实验和翻看博客得出了如下结论:
printf运行分为两步 一步是运算 一步是输出
一 printf的压栈顺序是从右到左,按此顺序进行运算
二 输出时后置(a++,b++,c++)的是以运算时当前变量的值作为输出结果
前置的(++a,++b,++c)是与变量(a,b,c)共享最后变量的值,也就是说前置的和变量的值相同
下面是我的笔算过程,可以方便大家理解,字写得不行请见谅(嘿嘿嘿)
![](https://i-blog.csdnimg.cn/blog_migrate/50e3a7c7a1761184c3270fe331f8e952.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/fe455d4135a8219f41da92175c2162e0.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1083fad2c97211de3d1d862e482ba902.jpeg)