
a++,意思是先返回(赋值),再加1.等同于伪代码 ret=a; a=a+1
count << a++ << a
第一步,进行解析
从右面扫描。a不需要动,a++要解析
ret=a
a=a+1
cout <<ret<<a
输出就是 1 2
此时a是2
cout <<a << a++
伪代码
ret=a
a=a+1
count << a << ret
输出就是3 2另外,语句的解析过程,是从右往左的。所以cout << fun1() << func2() ,是先执行func2,在执行func1,执行完后,结果存贮在临时变量中,输出时,按照从左往右结果进行。
再来个复杂些的例子:
b=1
printf( "%d %d %d", b++, b++, b )
其中两个b++都需要解析,返回结果分别存放在ret1 和ret2中。
注意,从右往左解析:print( ret1, ret2, b)
最右面的b不需要解析
然后是中间的b++:
ret2=b 注意,ret2此时为1
b=b+1
然后是左面的b++
ret1=b 注意,此时b已经是2了
b+b+1
所以执行结果为: 2 1 3
本文详细讲解了C++中运算符`a++`的工作原理,以及如何理解表达式如`count<<a++<<a`的执行顺序。通过实例展示了右结合性和先返回后操作的概念,解释了`b=1; printf(%d%d%db++,b++,b)`的输出结果。同时,强调了解析过程是从右到左,并探讨了函数调用的执行顺序。
1884

被折叠的 条评论
为什么被折叠?



