C++编译器默认使用的是 __cdecl 模式,参数是通过栈传递的,因此是从右到左的传参顺序。

int f(int a, int b, int c)
{
return 0;
}
int main(){
return f(printf("a"),printf("b"),printf("c"));
}

当用函数做实参时,编译器一般会根据参数传递顺序,先计算出函数的返回值,然后将返回值传递给原来的函数。

函数的参数是通过栈传递的。因此参数从右往左入栈顺序是:printf("c"),printf("b"),printf("a")。依次计算出结果:cba
 
参数传递标准
 
C,C++中
cdecl ,stdcall 自右向左 传到堆栈
pacal,自左向右传递到堆栈
register 无方向,因为没有用到堆栈
fastcall 使用寄存器的参数也没规定方向,并且至少有三个寄存器,和两个寄存器的两种版本
 

最新文章

  1. 不在折腾----hadoop-2.4.1完全分布式集群搭建
  2. 三、jQuery--jQuery基础--jQuery基础课程--第11章 jQuery 工具类函数
  3. python一个简单的登录
  4. CommonJS规范
  5. Python基础 第二天
  6. 汇编语言-求X的阶乘
  7. 网格GridLayout建立
  8. 功能整合(一):滚动条的变相隐藏、js控制div的渐变显示、滚动条监听
  9. python之分析decode、encode、unicode编码转换
  10. Windows Azure NotificationHub+Firebase Cloud Message 实现消息推动(付源码)
  11. 实验9-1 编写一个存储过程proc_test_func
  12. @EnableHystrix
  13. linux-shell数据重定向详细分析
  14. 去掉li列表前面的空格
  15. python之面向对象的高级进阶
  16. IOS基本数据类型之枚举
  17. Spring源码深度解析系列-----------org.springframework.aop-3.0.6.RELEASE
  18. asp.net Core2.1连接到Mysql 数据库
  19. innosetup的静默安装与卸载
  20. CentOS 6.9安装类型选择(Basic Server/Web Server)

热门文章

  1. Stream.toMap
  2. Oracle中的job(定时任务)
  3. Oracle中的索引
  4. android studio 使用 aidl(三)权限验证
  5. jmeter进阶
  6. Vue.js 学习
  7. 【Matlab】线性调频信号LFM 仿真
  8. 程序员Meme 第00期
  9. 学习 27 门编程语言的长处,提升你的 Python 代码水平
  10. 【死磕Java并发】—–深入分析volatile的实现原理