为什么像(0 <a <5)这样的条件总是正确的?
我在C中实现了以下程序
#include int main() { int a = 10 ; if(0 < a < 5) { printf("The condition is true!") ; } return 0 ; }
为什么条件0<a<5
总是返回true
?
因为0 < a
计算结果为1
。
使用:
a > 0 && a < 5
如果你想测试a
是否大于0
且小于5
。
与Python不同,C将条件评估为:
(0 < a) < 5
(0 < a)
的结果是0或1,两者都小于5,因此整体条件为真。
在C中,必须编写范围测试:
0 < a && a < 5
请注意Python脚本:
for a in range(-1,7): if 0 < a < 5: print a, " in range" else: print a, " out of range"
产生输出:
-1 out of range 0 out of range 1 in range 2 in range 3 in range 4 in range 5 out of range 6 out of range
当然,使用相同if
条件的“等效”C程序会为每个值产生“范围内”的答案。
由于0
小于0 < a
总是计算为1
,小于5
,使0 < a < 5
始终为true
。 将你的病情改为
if(0 < a && a < 5) {...}
if(x
它实际上是有效的语法,但它没有做你想要的。
意识到x
x
有可能:
if(x < y && y < z)