提起i++(i--)和++i(--i),相信大家非常熟悉。两者的区别是:前者是先赋值,然后再自增或自减;后者是先自增或自减,后赋值。但是当printf函数与多个自增自减表达式结合起来,编译器实现i++(i--)和++i(--i)的原理你真的了解吗?今天,我们从一道有意思的题目揭开printf多个自增自减表达式底层实现的面纱......
源程序
按照我们的理解,这道题目太简单了嘛,不就是0,0,0。因为函数传参从右向左,i=0,先进行i++,i先赋值,那么取值为0,然后自增,i变成1。接着--i,先自减,i变成0,再赋值,取值为0。最后i++,先赋值,取值为0,再自增,i变成1。理完思路,你不禁会想,这道题没有一点意思,哈哈,先别高兴太早,等运行完结果验证一下......int main() { int i=0; printf("%d,%d,%d\n",i++,--i,i++); return 0; }