【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 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

【C++】小竹的C++学习笔记分享 | 78篇体系化文档×4.7 万字(PDF 可下载) - AI科研 编程 读书笔记 - 小竹の笔记本
订阅本站更新 - AI科研 编程 读书笔记 - 小竹の笔记本
【日常】2025年度总结(重磅手敲8K字) - AI科研 编程 读书笔记 - 小竹の笔记本