这个C程序的输出我无法理解

时间:2015-10-24 08:38:37

标签: c

我正在修改C并正在制作一些测试程序。在一个程序中,我正在检查一个正在翻译这种情况的条件。

#include <stdio.h>
int main()
{
if(0 <= 3000.000000 <= 2000.00){  //this is the condition
printf("3000 is less than 2000, whoa.. \n");
}
return 0;
}

输出始终是此打印字符串。我无法理解为什么。

P.S

我正在测试中间值,即3000.000000,但它可以是一些变量。

4 个答案:

答案 0 :(得分:6)

条件解析如下:

if((0 <= 3000.000000) <= 2000.00){ 

第一部分(0 <= 3000.000000)为真,在与1的比较中评估为2000.001 <= 2000.00是真的。

如果您正在尝试测试值a是否位于两个值bc之间或者是否等于两者之间,那么您需要一个表达式

(a >= b) && (a <= c)

答案 1 :(得分:4)

在C中,布林是整数:01

这条线从左到右解释:第一个0 <= 3000,这是真的,所以它最终为1。然后将该值输入下一半(1) <= 2000,这显然是正确的。

答案 2 :(得分:3)

它将在printf中打印字符串。

因为条件是静态的。

0始终小于30000.000000。对于下一个条件,第一个条件的输出返回1.它使用1进行检查。

第二个条件检查是1 <= 2000.00。这种情况也是如此。

所以,只打印字符串。

答案 3 :(得分:0)

第一个条件评估为1作为输出,并且进一步检查1&lt; 2000,这也是真的。所以,字符串被打印。