簡體   English   中英

這個 C 程序的輸出我看不懂

[英]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是否位於兩個值bc或等於其中之一,那么您需要一個表達式

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

您會發現在 C 中,布爾值是整數: 01

所以該行從左到右解釋:首先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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM