c++和js中参数入栈顺序区别

4 篇文章 0 订阅
一.原来一直c++开发,偶尔会遇到参数入栈顺序的问题,而c++是右侧函数先入栈.例子如下:
#include <iostream>

using namespace std;
int left(int& a)
{

    a *= 2;
    cout << "left " << a << endl; 
    return a;  //10
}
int right( int& a)
{

    a += 2;
    cout << "right " << a << endl;
    return a; //5
}

int _plus( int a = 0, int b = 0 )
{
    cout << "_plus " << a << " " << b << endl;
    return a + b; //15
}

int main()
{
    int a = 3;
    cout << _plus( left(a), right(a) ) << endl; //15
    int b;
    cin >> b;
}

输出结果:
right 5
left 10
15

c++的入栈顺序先right后left,所以先加后乘,结果为15.

二.由于先入为主,在后来学习js的时候,也遇到同样的问题结果入栈书序顺序为先成左后右而且全程是引用


function test7()
{
	function left(a){
		a *= 2;
		console.log( "left()", a);
		return a;
	}

	function right(a) {
		a += 2;
		console.log( "right()", a);
		return a;
	}

	function _plus( a = 0, b = 0 ){
		console.log( "_plus a:" + a + " b:" + b );
		return a + b;
	}

	var a = 3;
	console.log( _plus( left(a), right(a) ) );
}
test7();

输出结果:

left() 6
right() 5
_plus a:6 b:5
11

js中参数先左后右,结果与c++不同.而且默认是引用传值,所以更应该小心.








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值