如果我评估这个表达式:
3 + + 2
或
3 + + + + + + 2
我获得5
作为结果。
如果我也插入-
运算符,我也会得到一个结果(在这种情况下为1
):
3 + - + - + - 2
我在想运营商之间的空间可以被视为零,但如果我使用时间运算符,我会得到一个错误:
3 * * 2 % Error: Unexpected MATLAB operator.
发生了什么事?这个语法的含义是什么?它为什么适用于+
和-
而不适用于*
?
为什么这是有效的语法?
我正在使用Matlab R2014a。
答案 0 :(得分:12)
+
和-
可以是二元或unary运算符。 *
只能是二进制文件。
在您的代码中,第一个之后的所有+
和-
符号可能都被解析为一元运算符。因此3 + - 2
被解释为3 + (-2)
(+
是二进制,-
是一元的)。同样,3 - + - 2
被解释为3 - (+-2)
,即3 - (-2)
。
这不适用于*
,因为它不能是一元运算符。