#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
你学废了吗?
© 版权声明
1. 除特殊说明外,本网站所有原创文章的版权归作者所有,未经授权,禁止以任何形式(包括但不限于转载、摘编、复制、镜像等)发布至任何平台。
2. 论文总结类文章中涉及的图表、数据等素材,版权归原出版商及论文作者所有,仅为学术交流目的引用;若相关权利人认为存在侵权,请联系本网站删除,联系方式:i@smallbamboo.cn。
3. 违反上述声明者,将依法追究其相关法律责任。
2. 论文总结类文章中涉及的图表、数据等素材,版权归原出版商及论文作者所有,仅为学术交流目的引用;若相关权利人认为存在侵权,请联系本网站删除,联系方式:i@smallbamboo.cn。
3. 违反上述声明者,将依法追究其相关法律责任。
THE END
暂无评论内容