matlab 运行函数顺序,是否从左到右按顺序评估了matlab函数参数?

不要这样做!这些代码在MATLAB和Octave中都有效,但行为却截然不同。

MATLAB 强>:

您拥有的代码实际上是有效 MATLAB代码。但是,它没有达到您的预期。

在许多语言中,++k表示递增k并将其返回。在MATLAB中,++k与k相同,因为在MATLAB中:3 == +3 == ++3 == +++++++3。 --k也是如此。这是--k == -(-k) == +k == k。同样,在许多语言中k++表示返回k,然后递增它。但是在MATLAB中,k++和k--语法无效并导致语法错误。

您的代码(在MATLAB中)相当于:

print_factor(p(k), p(k));

使用p和print_factor的两个示例函数在MATLAB中测试代码:

p = @(x) 2*x;

print_factor = @(x,y)disp([x,y]);

k = 2;

print_factor(p(++k), p(--k));

4 4

k

k =

2

八度:强>

在Octave中,运算符是定义的,并且从左到右进行了计算,但我不认为关于增量运算符的official documentation说明了这一点。它可能与平台有关,就像在C ++中一样。但是,它可能与其他表达式的计算方式相同,请参见底部的示例。

您可以在线测试here。

Octave完全相同的代码:

p = @(x) 2*x;

print_factor = @(x,y)disp([x,y]);

k = 2;

print_factor(p(++k), p(--k));

6 4

k

k = 2

print_factor(p(++k), p(++k));

6 8

k

k = 4

正如Dan评论的那样:在Octave中编写不遵循MATLAB语法的代码并不是一个好主意。如果你想在MATLAB中运行它,你将不得不重写它。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值