在Matlab中连接二进制运算符(如“3 + + 2”)不会产生错误

时间:2018-01-08 12:47:52

标签: matlab syntax operators

如果我评估这个表达式:

3 + + 2

3 + + + + + + 2

我获得5作为结果。

如果我也插入-运算符,我也会得到一个结果(在这种情况下为1):

3 + - + - + - 2

我在想运营商之间的空间可以被视为零,但如果我使用时间运算符,我会得到一个错误:

3 * * 2 % Error: Unexpected MATLAB operator.

发生了什么事?这个语法的含义是什么?它为什么适用于+-而不适用于*

为什么这是有效的语法?

我正在使用Matlab R2014a。

1 个答案:

答案 0 :(得分:12)

+-可以是二元或unary运算符。 *只能是二进制文件。

在您的代码中,第一个之后的所有+-符号可能都被解析为一元运算符。因此3 + - 2被解释为3 + (-2)+是二进制,-是一元的)。同样,3 - + - 2被解释为3 - (+-2),即3 - (-2)

这不适用于*,因为它不能是一元运算符。