搜索
热搜: NOIP OIer 神牛
查看: 239|回复: 0

关于cout和printf的压栈顺序问题

[复制链接]

35

主题

54

帖子

4536

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4536
发表于 2024-3-1 22:43:57 | 显示全部楼层 |阅读模式
  1. #include<iostream>
  2. using namespace std;

  3. int a=1;
  4. int dx(int x,int y)
  5. {
  6.         cout<<"dx"<<endl;
  7.         a=100;
  8.     cout<<x<<endl;
  9.     if(x>y) return x;
  10.     else return y;
  11.        
  12. }

  13. int fx(int x,int y)
  14. {
  15.         cout<<"fx"<<endl;
  16.         return 0;
  17. }

  18. int main()
  19. {
  20.         cout<<dx(a,6)<<fx(0,1);
  21.         return 0;
  22. }
复制代码
程序输出:
fx
dx
1
60

为什么先执行的fx函数?

c/c++在函数调用时,默认都是右序入栈,导致先执行fx,返回结果入栈,再执行dx,返回结果入栈,然后再从栈中取出输出。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

津ICP备19006949号-1 | 津公网安备12010102000465号

快速回复 返回顶部 返回列表