#include<stdio.h>
int main(){
int i=5;
printf("%d %d %d %d %d",--i,++i,i++,--i,i++);
return 0;
}
如以上代码,输出为什么会是6 6 5 6 5
呢?
首先将printf后面的参数从左至右依次放入参数栈
那么从上到下应该为i++ --i i++ ++i --i
然后从上至下依次取出放入结果栈,同时进行对应的运算
对于后置 ++ 或者 - - 而言,我们直接把结果放到结果栈中 对于前置 ++ 或者 - - 而言,我们把一个指向 i 变量的指针放入结果栈当中 对于一个变量而言,我们把一个指向 i 变量的指针放入结果栈当中
那么现在结果栈中从上到下应该为*p *p 5 *p 5
最终运算结果i为6
将*p改为6
最终从结果栈取出输出
输出结果即为6 6 5 6 5
你学废了吗?
© 版权声明
若无特殊说明,文章版权归作者所有,请勿转载至任何平台。
THE END
暂无评论内容