0

在这个表达式中

lmin=lminflag & ~kmod & actminsub<nsm*pminu & actminsub>pminu;

& 运算符像按位 AND 运算符吗?lminflag 和 kmod 都是以逻辑 1 或 0 作为元素的数组,而 lmin 结果也是 1 或 0。

4

1 回答 1

5

是的。

  1. & 是每个元素的 AND 运算符。
  2. &&是一个标量 AND 运算符,有条件地执行语句的其余部分。

例如,给定:

a = true;
b = false;
aa = [true false];
bb = [true true];
fnA = @()rand>0.5; %An anonymous function returning true half the time

然后:

a &  b;  %returns false
a && b; %returns false (same as above)

然而

aa &  bb;  %this an error    
aa && bb; %returns the array [true false]

当操作数是具有副作用的函数时会更有趣。

b &  fnA;  %Returns false, and the `rand` function is called (including a small performance hit, and an update to the random state)
b && fnA;  %Returns false, and the `rand` function was not called (since `b` is false, the actual value of `fnA` doesn;t effect the result
于 2012-12-03T04:58:10.850 回答