一道Matlab题目,a=1:2:7;b=3:6;c=a+(a>3)&(b<5);执行后,c的值是【1 1 0 0】为什么

如题所述

a=1:2:7; %a=[1,3,5,7]
b=3:6; %b=[3,4,5,6]
c=a+(a>3)&(b<5); %相当于(a+(a>3)) & ((b<5))
a>3返回的是a中各个元素是否大于3,返回的应当是[0,0,1,1]
a+(a>3)=[1,3,6,8]
b<5返回的是[1,1,0,0]
进行&操作,即
[1,3,6,8]&[1,1,0,0]
&操作数中如果为非零,就认为是1

[1,1,1,1]&[1,1,0,0]
只有两个都为1的时候,&的结果为1
最后得到
[1,1,0,0]
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-24
注意符号的优先级问题,你如果在(a>3)&(b<5)外面再加个()的话应该可以得到你要的答案,这里先(a+(a>3))了,然后再&的
第2个回答  2011-05-24
是符号优先级的问题啦,c=a+((a>3)&(b<5));结果就不一样了
相似回答