gpt4 book ai didi

matlab - 为什么在 MATLAB 中允许使用多个连续的加号语法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:27 24 4
gpt4 key购买 nike

有谁知道为什么这在 MATLAB 中有效?

>> 1 ++ 2
ans =
3

我使用 C、Python、Java 等语言编写代码,我发现这完全可以工作是最违反直觉的。大概有一些我不理解的关于解析器的重要内容?

最佳答案

plus 之间有区别和 uplus .我怀疑 MATLAB 将第一个 + 作为 plus,将所有其他作为 uplus。由于 uplus 默认只是“返回后面的内容”,您添加 12,并在中使用大量的“返回后面的内容”之间。

a=2;
c=+a % unitary plus
c =
2
1+2 % addition
ans =
3
1+++2 % addition and two uplusses
ans =
3

uplus 存在的原因是允许运算符在类中重载。同样适用于其他语言,例如in C# , 以允许在受限类中进行运算符重载。


该 C# 线程中提到的另一个原因是将无符号短整型更改为整数,而 MATLAB 并非如此:

d=uint8(1)
d =
uint8
1
+d
ans =
uint8
1
a=+d
a =
uint8
1

但是,由于 Cris Lunego,它确实将 bool 值转换为 double 值指出这一点:

+true
ans =
1
+false
ans =
0

然而,以下内容对我来说仍然是个谜,灵感来自 Sanjay Manohar's comment :

>> [1 ++ 2]
ans =
1 2 % Two unary plusses
>> [1 + + 2]
ans =
3 % A normal plus and a unary one
>> [1++2]
ans =
3 % A normal plus and a unary one

这同样适用于多个加号,[1+++..+++ 2],因此所有加号在中间连续生成 [1 2] ,所有其他组合(据我测试)导致 3。我问了一个单独的问题:Why do the plus and unary plus behave strange in array syntax?

关于matlab - 为什么在 MATLAB 中允许使用多个连续的加号语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52555709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com