MATLAB中&和&&之间的区别是什么?

Fan*_*mas 91 matlab short-circuiting logical-operators

是什么之间的区别&,并&&在MATLAB逻辑运算符?

Fra*_*ser 90

单个&符号&是逻辑AND运算符.双&符号&&又是一个逻辑AND运算符,它采用短路行为.短路仅意味着仅在第一个操作数(左侧)未完全确定结果时才评估第二个操作数(右侧)

A&B(评估A和B)

A && B(仅当A为真时才评估B)

  • 警告:`&`可以对数组进行操作,但`&&`只能对标量进行操作. (72认同)
  • @neuronet它实际上并不是关于效率,更多的是它允许一个构造,其中第一个表达式保证条件,否则第二个表达式可能导致运行时错误.例如`d!= 0 && 1/d` vs`d!= 0&1/d` - 第一个保证不除零,第二个不保证. (7认同)
  • 这个答案是不完整和不准确的。如果在`if`语句中,`&`会短路。和&&采用标量输入。[下面的@Loren答案](/sf/answers/97552451/)是正确的。 (2认同)
  • 还要注意,Loren是MathWorks的雇员。答案没有比这更有权威性的了。如果您愿意做出牺牲,则可以标记答案以删除mod(您不能自己删除它,因为它已被接受)。您将保留从中获得的代表(如果我正确理解了系统),那么我们将得到一个技术上正确且权威的最佳答案。 (2认同)

小智 33

&&||始终采用标量输入和短路. |并且&仅在if/while语句中采用数组输入和短路.对于分配,后者不会短路.

有关更多信息,请参阅这些文档页面

  • 您是否知道哪些 Matlab 版本在 if/while 语句中快捷方式“&”和“|”?R2012b和R2014a中似乎并非如此。 (2认同)

gno*_*ice 17

正如其他人已经提到的那样,它&是一个逻辑AND运算符,&&是一个短路AND运算符.它们在操作数的评估方式以及它们是否在数组或标量上运行方面有所不同:

  • &(AND运算符)和|(OR运算符)可以以元素方式对数组进行操作.
  • &&并且||是短路版本,仅当结果未完全由第一个操作数确定时才评估第二个操作数.这些只能在标量上运行,而不能在阵列上运行.


Mar*_*ark 8

两者都是逻辑AND操作.&&虽然是一个"短路"运营商.来自MATLAB文档:

它们是短路运算符,因为只有当第一个操作数没有完全确定结果时,它们才会计算第二个操作数.

在这里查看更多.


Eri*_*ber 5

与其他语言类似,&是逻辑按位运算符,&&而是逻辑运算.

例如(原谅我的语法).

如果..

A = [True True False True]
B = False
A & B = [False False False False]
Run Code Online (Sandbox Code Playgroud)

..要么..

B = True
A & B = [True True False True]
Run Code Online (Sandbox Code Playgroud)

因为&&,只有在左操作数为真且结果为单个布尔值时才计算右操作数.

x = (b ~= 0) && (a/b > 18.5)

希望很清楚.

  • 这不是按位,而是元素方面的. (3认同)
  • 10年后我真的好了吗? (3认同)