簡體   English   中英

if語句中的條件為小數時

[英]When condition inside if statement is fractional

void main(void)
{
    int i;
    for(i=1;i<=5;i++)
    {
        if(i/5)
            continue;
        printf("%d",i);
    }
}

我的簡單查詢是,如果將“ if”中的條件評估為分數,是否將其視為0?這里的輸出為1234,所以當條件為1 / 5,2 / 5,3 / 5,4 / 5時它是i的打印值,當5/5 = 1時,它正在執行Continue語句。

i/5將被視為整數除法(當iint當然),無論它出現在( if或其他)。 因此,兩個整數之間的/實際上會給您商。

i ∈ {0, 1, 2, 3, 4}i / 5將給出0 i ∈ {0, 1, 2, 3, 4}而當i = 5i ∈ {0, 1, 2, 3, 4}將給出1

if條件語句為trueif語句執行條件語句(在本例中為continue語句)。 如下將整數值轉換為布爾值:零變為false ,其他任何值變為true 由於表達式在i==5之前不會求值為非零值,因此直到那時才執行條件語句。

每當你有

if ( expr )

而且expr顯然不是對/錯的東西,您總可以這樣認為:

if( (expr) != 0)

因此,如果expr計算為分數,那么只要分數不等於0,該條件就將計算為true。

但是,在您的示例中,由於i是整數,所以i/5將執行整數除法,該運算將永遠不會給出分數。 如果i小於5,則i/5將為0,這將使條件為假。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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