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

比较运算符的类似于数学的链接-如“ if((5 <j <= 1))”中的一样

比较运算符的类似于数学的链接-如“ if((5 <j <= 1))”中的一样

C++ C
幕布斯6054654 2020-02-03 14:17:28
int j=42;if( (5<j<=1) ) {    printf("yes");} else {    printf("no");}输出:yes为什么输出是?条件不是只有一半成立吗?
查看完整描述

3 回答

?
30秒到达战场

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

C不了解类似数学的语法,因此


if(1<j<=5)

没有按照您的期望和要求进行解释;它应该是


if (1 < j && j <= 5)

或类似。


如其他答案所述,该表达式的计算方式为


 ((1 < j) <= 5)


 =>  ("true" <= 5)


 =>  "true"

其中“ true”(布尔值)被隐式转换为1,例如explaneid,例如这里,也参考了标准,这解释了为什么“ true”必须“小于” 5(尽管在C中可能并不完全正确)说“从bool到int的隐式转换”)


查看完整回答
反对 回复 2020-02-03
?
炎炎设计

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

根据运算符优先级和LR关联性,


1<j 评估为1


1<=5 评估为1


if(1)

  printf("yes")


查看完整回答
反对 回复 2020-02-03
  • 3 回答
  • 0 关注
  • 795 浏览

添加回答

举报

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