猿问

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

int j=42;

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

    printf("yes");

} else {

    printf("no");

}

输出:


yes

为什么输出是?

条件不是只有一半成立吗?


幕布斯6054654
浏览 796回答 3
3回答

30秒到达战场

C不了解类似数学的语法,因此if(1<j<=5)没有按照您的期望和要求进行解释;它应该是if (1 < j && j <= 5)或类似。如其他答案所述,该表达式的计算方式为&nbsp;((1 < j) <= 5)&nbsp;=>&nbsp; ("true" <= 5)&nbsp;=>&nbsp; "true"其中“ true”(布尔值)被隐式转换为1,例如explaneid,例如这里,也参考了标准,这解释了为什么“ true”必须“小于” 5(尽管在C中可能并不完全正确)说“从bool到int的隐式转换”)

炎炎设计

根据运算符优先级和LR关联性,1<j 评估为11<=5 评估为1if(1){&nbsp;&nbsp; printf("yes")
随时随地看视频慕课网APP
我要回答