链接多个大于/小于运算符

jsc*_*ode 7 c

在一个if声明中我想要包括一个范围,例如:

if(10 < a < 0)
Run Code Online (Sandbox Code Playgroud)

但通过这样做,我得到一个警告"毫无意义的比较".但是,这没有任何警告,工作正常:

if(a<10 && a>0)
Run Code Online (Sandbox Code Playgroud)

第一种情况可以在C中实现吗?

Kei*_*son 29

请注意,原始版本完全合法; 它只是没有做你可能(合理地)认为它做的事情.你很幸运,编译器认为它是一个可能的错误,并警告你.

在if(10 < a < 0)左到右的运营商联营,就像<操作.所以就像+真正的意思一样a + b + c,(a + b) + c真的意味着a < b < c.所述(a < b) < c,如果条件为假,1,如果它是真实的操作者产生的0 int值.所以你要么测试0是否小于c,或者1是否小于c.

在不太可能的情况下,这确实是你想要做的,添加括号可能会使警告无声.它还会让任何读取你的代码的人放心,你知道自己在做什么,所以他们不会"修复"它.(同样,这仅适用于您真正想要的不太可能的事件<.)

检查是否(a < b) < c)小于a和b小于的方法b是:

a < b && b < c
Run Code Online (Sandbox Code Playgroud)


use*_*016 6

这是不可能的,你必须像在案例2中那样拆分支票.


Alo*_*ave 5

不,这是不可能的.
您必须通过拆分两个条件检查来使用第二种方法.