[英]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.