为什么像(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返回一个bool,即true或false。 然后将它与“z”的值进行比较。 所以“ x ”的意图看起来是错误的。

有可能:

 if(x < y && y < z)