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

Jep*_*sen 8 syntax matlab operators

如果我评估这个表达式:

3 + + 2
Run Code Online (Sandbox Code Playgroud)

或者也

3 + + + + + + 2
Run Code Online (Sandbox Code Playgroud)

我得到5了结果.

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

3 + - + - + - 2
Run Code Online (Sandbox Code Playgroud)

我认为运算符之间的空间可以被认为是零,但是如果我使用times运算符,我会得到一个错误:

3 * * 2 % Error: Unexpected MATLAB operator.
Run Code Online (Sandbox Code Playgroud)

发生了什么?这是什么语法的意义,为什么它一起工作+-,但不*

为什么这是有效的语法?

我正在使用Matlab R2014a.

Lui*_*ndo 12

+并且-可以是二元或一元运算符.* 只能是二进制的.

在你的代码,所有+-符号后的第一次很可能被解析为一元运算符.所以3 + - 2被解释为3 + (-2)(+二元,-一元).同样,3 - + - 2被解释为3 - (+-2),即3 - (-2).

这不起作用,*因为它不能是一元运算符.

  • @AnderBiguri真正令人困惑的是`3 + 2`是'5`,`[3 + 2]`是'5`,`3 + 2`是'5`,但是`[3 + 2]`是`[ 3 2]`.空白对运算符是一元函数还是二元函数以及真正愚蠢的方式都有所不同. (7认同)
  • 一旦解释它很有道理,但这个问题让我感到困惑 (2认同)