关于C/C++中函数参数传递的规则

f(A,B,C)
在编译程序中,对函数参数传递的处理是由右向左进行的。
因此,先传递的是最右边的参数的值。这个结论在日常使用的时候其实也很难发现有什么具体的区别,但是在编译原理中或者一些偏向于理论的考试中这恰恰是最容易忽视的地方
下面简单举例说明:
测试程序:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;

int fun(int x,int y);
int main()
{
	int i=1;
	cout<<fun(i,++i)<<endl;
	return 0; 
}

int fun(int x,int y)
{
	return x+y;
}

在查看运行结果前可以自己猜一下运行结果的数值。

运行结果:
运行结果
先传递二参,即i先进行自增,这是函数两个实参都变为了2,所以结果是4。

转换一下顺序再次进行比较:

#include<iostream>
#include<bits/stdc++.h>
using namespace std;

int fun(int x,int y);
int main()
{
	int i=1;
	cout<<fun(i,i++)<<endl;
	return 0; 
}

int fun(int x,int y)
{
	return x+y;
}

运行结果:3
运行结果
这里先传二参,但是先传后增,所以在到一参的时候值还是1,传完后二参变2,所以结果为3.

用到的地方不多,但是在写C的编译器的时候关于这些语法需要注意一些。
这里也需要注意后增是在一次传值之后就会执行自增。前增是在进行一次传值前进行传值。

走

我觉得慢慢来,是一种诚意。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值