在一个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)