一道Matlab题目,a=1:2:7;b=3:6;c=a+(a>3)&(b<5);执行后,c的值是【1 1 0 0】为什么
3个回答
展开全部
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]
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]
展开全部
注意符号的优先级问题,你如果在(a>3)&(b<5)外面再加个()的话应该可以得到你要的答案,这里先(a+(a>3))了,然后再&的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是符号优先级的问题啦,c=a+((a>3)&(b<5));结果就不一样了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询