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的隐式转换”)
- 3 回答
- 0 关注
- 795 浏览
添加回答
举报
0/150
提交
取消