【C】printf()中的变量自增自减

#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
点赞16 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容