微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

八度中的&和&&有什么区别?

如何解决八度中的&和&&有什么区别?

最初,我只使用了一个&。但是,Octave表示使用“ MATLAB样式的快捷方式”。因此,我将&&改为两倍。如您所见,相等查找器仅适用于单个&,而不适用于&&

find(node(:,1)==b && node(:,2)==ro)
  ans = [](0x0)
find(node(:,1)==b & node(:,2)==ro)
  ans =  6

为什么两个结果不相等?

解决方法

双重逻辑操作&&||是短路操作。

它们有非常强大的用途:他们不会评估所有条件。这对于诸如以下的事情非常有用:

if (a==5) && super_slow_computation_here()

在上述情况下,如果a不等于5,甚至不会计算super_slow_computation_here,它将“短路” if条件,我们知道这不是真的(and)。只需使用一个&,它将同时计算两者,然后计算and

显然这不是您想要的,您希望计算所有条件,因为您正在调用find,因此需要使用数组的所有行。那么,为什么八度建议使用double? 因为八度音阶错误。 Octave看到您使用2个数组和一个逻辑运算符,并假设您在if而非find中使用它们,因此建议您这样做。忽略八度;)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。