为了账号安全,请及时绑定邮箱和手机立即绑定

为什么a=1,(a&2!=0)为真。

为什么a=1,(a&2!=0)为真。

C
人还是要学点什么 2017-03-10 11:16:58
查看完整描述

3 回答

已采纳
?
smallyu

TA贡献6条经验 获得超5个赞

!=的运算优先级低于&,先计算表达式a&2

a=1(赋值),1&2的结果为1(真),1(真)不等于0(假)的结果为真

所以最终结果为真

补充:默认认为这是一个逗号表达式,返回最后一个表达式的值。

查看完整回答
1 反对 回复 2017-03-10
  • JAVAZeng
    JAVAZeng
    说反了,!=的运算优先级高于&(按位与),先计算的是2!=0
  • JAVAZeng
    JAVAZeng
    所以2!=0为true, 1&true为1, 1转为布尔值为true
  • smallyu
    smallyu
    http://baike.baidu.com/link?url=J73rCfeMwhi1DQ-ysV5tWqMaH2JATYLnhxEA6iOSpwdfB6YK65R_m0655yQ1sHL4_fikTJZL1Fodv_YQbsUqO8-BcxoIzzhke1fiCIgcHl5-4-tR84kqmFF2IFrhlcPLrF8-eM808cfFqUCikM4m0a
点击展开后面1
?
我是大树

TA贡献8条经验 获得超4个赞

你这采纳的答案真让我伤心。。

要不你运算下 a=0的情况?

查看完整回答
1 反对 回复 2017-03-10
?
漫路诉福

TA贡献4条经验 获得超1个赞

为什么要写这么古怪的代码。
查看完整回答
1 反对 回复 2017-03-10
?
黒馬

TA贡献1条经验 获得超1个赞

a&2 逻辑"与"运算,001(1的二进制)、020(2的二进制),得到结果为二进制 000,未转换为10进制0,所以最后得到结果为真。当改为 a=1, b= a&2; b!=0(运算符判断前,b已转为10进制0)为假。

1&2 = 0;

//img1.sycdn.imooc.com//58c22dca0001a2f001590114.jpg


查看完整回答
1 反对 回复 2017-03-10
?
管管0_0

TA贡献16条经验 获得超3个赞

a=1,1&2=1,所以1!=0为真啊。&是按位与

查看完整回答
反对 回复 2017-03-10
?
我是大树

TA贡献8条经验 获得超4个赞

这个要看运算符的优先级,不知道你用的什么语言,假定js吧。

!=的优先级高于&,所以先运算2!=0,返回true;再运算a&true,返回1。

就是说,最后返回的是数值,而非逻辑真假。

查看完整回答
反对 回复 2017-03-10
  • 3 回答
  • 0 关注
  • 2729 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信