八度音阶的 & 和 && 有什么区别?



最初我使用了一个&。然而,奥克塔夫说;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,您需要使用数组的所有行。为什么Octave建议使用double因为Octave是错误的。Octave看到您使用2个数组和一个逻辑运算符,并假设您在if而不是find中使用它们,因此建议这样做。忽略倍频程;(

相关内容

  • 没有找到相关文章

最新更新