如何解决八度中的&和&&有什么区别?
最初,我只使用了一个&
。但是,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 举报,一经查实,本站将立刻删除。