我定义了两个非空向量:
tmp = [1, 2, 3]
tmp2 = [1, 2]
Run Code Online (Sandbox Code Playgroud)
当我打字
size(tmp, 1) > 0
Run Code Online (Sandbox Code Playgroud)
输出是true。但是当我写
size(tmp, 1) > 0 & size(tmp2, 1) > 0
Run Code Online (Sandbox Code Playgroud)
它返回假。当我将每个术语放入括号中时,例如
(size(tmp, 1) > 0) & (size(tmp2, 1) > 0 )
Run Code Online (Sandbox Code Playgroud)
它按预期返回 true。但我不明白为什么size(tmp, 1) > 0 & size(tmp2, 1) > 0返回false?
这是两件事的结果。第一个是运算符优先级。您编写的代码被解析为size(tmp, 1) > (0 & size(tmp2, 1)) > 0(即作为链式比较)。
更大的问题,不过是,你可能想用&&代替&。&是按位与,while&&是逻辑与。因此,&&在此处具有您期望的优先级。