if后有a<b<c不应该是错误的吗??

#include<iostream>

using namespace std;

int main()

{ int a=5,b=4,c=3,d=2;

if(a>b>c) cout<<d<<endl;

else if((c-1>=d)==1) cout<<d+1<<endl;

else cout<<d+2<<endl;

return 0; } 执行后输出结果是( )。

如果想要表达a大于b并且b大于c的话,应该使用if(a>b && b>c)这种逻辑进行表达。

如果使用a>b>c这种表达式的话,编译器会根据从左到右检查的方法,执行这条语句。

a>b吗?如果a>b,就是1,否则就是0。

如果a>b为真,那么表达式a>b就是1了。接下来判断1>c吗?如果1>c,返回值就是1;否则,返回值就是0.

反之,那么表达式a>b就是0了。接下来判断0>c吗?如果0>c,返回值就是1;否则,返回值就是0.

这样虽然在语法上,编译器还能解释得通,但是从逻辑上来讲,已经背离了判断表达式是否a>b并且b>c的初衷了。

 

希望能够对题主有所帮助。

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632