我正在修改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,但它可以是一些变量。
答案 0 :(得分:6)
条件解析如下:
if((0 <= 3000.000000) <= 2000.00){
第一部分(0 <= 3000.000000)
为真,在与1
的比较中评估为2000.00
。 1 <= 2000.00
是真的。
如果您正在尝试测试值a
是否位于两个值b
和c
之间或者是否等于两者之间,那么您需要一个表达式
(a >= b) && (a <= c)
答案 1 :(得分:4)
在C中,布林是整数:0
或1
。
这条线从左到右解释:第一个0 <= 3000
,这是真的,所以它最终为1
。然后将该值输入下一半(1) <= 2000
,这显然是正确的。
答案 2 :(得分:3)
它将在printf中打印字符串。
因为条件是静态的。
0始终小于30000.000000。对于下一个条件,第一个条件的输出返回1.它使用1进行检查。
第二个条件检查是1 <= 2000.00。这种情况也是如此。
所以,只打印字符串。
答案 3 :(得分:0)
第一个条件评估为1作为输出,并且进一步检查1&lt; 2000,这也是真的。所以,字符串被打印。