MATLAB中+/-连续书写合法但*连续报错的原因咨询
关于MATLAB中连续+/-合法但*报错的语法解析
这问题抓得特别准,其实核心是MATLAB对不同运算符的身份定义差异,我给你掰扯清楚:
1. +、-的双重身份:二元+一元运算符
在MATLAB里,+和-有两种明确的作用:
- 二元运算符:最常见的用法,用来完成两个数值的加减运算,比如
3 + 2、5 - 3; - 一元运算符:可以单独放在数值前表示正负号,比如
+2(正2)、-3(负3),这是完全合法的写法。
当你连续写多个+或者+-交替组合时,MATLAB的语法解析器会自动把它们拆解成连续的一元运算符嵌套:
- 比如
3 + + 2,实际被解析为3 + (+2),计算结果自然是5; - 再比如
3 + - + - + - 2,拆解后是3 + (- (+ (- (+ (-2))))),一步步运算后就是3 + (-2),结果为1。
甚至你直接输入+ + + + 10,MATLAB也会返回10——多个一元正号叠加不会改变数值;输入- + - 10,会得到- (+ (-10)) = 10,逻辑完全通顺。
2. *只有二元运算符身份,无一元用法
而*就不一样了——它只有二元运算符的身份,只能用来完成两个数值的乘法(比如3 * 2),MATLAB里根本不存在*5这种一元乘法的写法(毕竟“乘以5”必须要有被乘数才成立)。
所以当你写3 * * 2时,MATLAB的解析器看到第一个*是二元运算符(前面是数值3),但第二个*前面是运算符,它找不到对应的一元*定义,就会判定这是个未知的非法运算符,直接抛出Error: Unexpected MATLAB operator的错误。
顺带提一句,如果你想做幂运算,MATLAB里用的是^,比如3^2会返回9,而不是其他语言常用的**。
内容的提问来源于stack exchange,提问作者Jepessen
相关产品推荐
相关产品推荐

