[英]Output of this C program i can't understand
我正在再次修改 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;
}
输出始终是此打印字符串。 我不明白为什么。
聚苯乙烯
我在这里测试中间值,即 3000.000000,但它可以是一些变量。
条件解析如下:
if((0 <= 3000.000000) <= 2000.00){
第一部分(0 <= 3000.000000)
为真,在与2000.00
的比较中评估为1
。 1 <= 2000.00
是真的。
如果您试图测试一个值a
是否位于两个值b
和c
或等于其中之一,那么您需要一个表达式
(a >= b) && (a <= c)
您会发现在 C 中,布尔值是整数: 0
或1
。
所以该行从左到右解释:首先0 <= 3000
,这是真的,所以它最终为1
。 然后将该值送入下半部分, (1) <= 2000
,这显然是正确的。
它将在 printf 中打印字符串。
因为条件是静态的。
0 总是小于 30000.000000。 对于下一个条件,第一个条件的输出返回 1。它使用 1 进行检查。
第二个条件检查是 1 <= 2000.00。 这个条件也成立。
所以,只有这会打印字符串。
第一个条件评估为 1 作为输出,并进一步检查 1<2000 这也是真的。所以,字符串被打印出来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.