在 Matlab 中连接二元运算符如“3 + + 2”不会出错
Contatenation of binary operators like "3 + + 2" in Matlab does not give errors
如果我计算这个表达式:
3 + + 2
或
3 + + + + + + 2
结果我得到5
如果我还插入 -
运算符,我也会得到一个结果(在本例中为 1
):
3 + - + - + - 2
本来以为运算符之间的space可以认为是0,但是如果用times运算符,反而报错:
3 * * 2 % Error: Unexpected MATLAB operator.
发生了什么事?此语法的含义是什么?为什么它适用于 +
和 -
而不适用于 *
?
为什么这是有效的语法?
我正在使用 Matlab R2014a。
+
和 -
可以是二进制或 unary 运算符。 *
只能是二进制。
在您的代码中,第一个符号之后的所有 +
和 -
符号可能都被解析为一元运算符。所以 3 + - 2
被解释为 3 + (-2)
(+
是二元的,-
是一元的)。同样,3 - + - 2
被解释为3 - (+-2)
,即3 - (-2)
.
这不适用于 *
,因为它不能是一元运算符。
如果我计算这个表达式:
3 + + 2
或
3 + + + + + + 2
结果我得到5
如果我还插入 -
运算符,我也会得到一个结果(在本例中为 1
):
3 + - + - + - 2
本来以为运算符之间的space可以认为是0,但是如果用times运算符,反而报错:
3 * * 2 % Error: Unexpected MATLAB operator.
发生了什么事?此语法的含义是什么?为什么它适用于 +
和 -
而不适用于 *
?
为什么这是有效的语法?
我正在使用 Matlab R2014a。
+
和 -
可以是二进制或 unary 运算符。 *
只能是二进制。
在您的代码中,第一个符号之后的所有 +
和 -
符号可能都被解析为一元运算符。所以 3 + - 2
被解释为 3 + (-2)
(+
是二元的,-
是一元的)。同样,3 - + - 2
被解释为3 - (+-2)
,即3 - (-2)
.
这不适用于 *
,因为它不能是一元运算符。