不要这样做!这些代码在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中运行它,你将不得不重写它。