A logical story

来源:互联网 发布:sql 求和 编辑:程序博客网 时间:2024/05/17 22:28
if 4 | []    disp('Must be true')end


Must be true

MATLAB evaluates

            4 | []

as true.

However, swapping the order of the argument to | results in a false.

if [] | 4    disp('Must be true')else    disp('Must be false')end


Must be false

 

There are several concepts that might be helpful for understanding this mystery.

  • Empty arrays evaluate to false for the purposes of if and while.         
  • The nonscalar | and & operators short-circuit in if andwhile expressions, but not otherwise.         
  • It's best to feed if and while scalar expressions.  This means considering using the newer (MATLAB version 6.5) logical operators|| and &&.  These operators always short-circuit.         
  • Use reduction operations explicitly to reduce expressions to scalar. Examples of these operations includeall and any.

 

原创粉丝点击