天天看點

有趣的for循環

#include <stdio.h>
int main()
{
    int i = ;
    for(i = , printf(" First = %d", i);i<, printf(" Second = %d", i);i++, printf(" Third = %d", i))
    {
        printf(" Fourth = %d", i);
    }
    system("pause");
    return ;
}
           

這段代碼會輸出什麼?我說死循環你會信?

有趣的for循環

上面是我在某一時刻截取的螢幕輸出,可以看到此時的Second 、Third 、Fourth 都已經達到了5000以上,并不是我們一開始想象的到10就截止了,而且它一直在執行螢幕輸出,已經是一個死循環了。那麼為什麼會有上面的現象呢?下面來分析一下。

for循環語句塊判斷是否繼續執行的語句已經換成了i<10, printf(” Second = %d”, i),這裡考察的兩個知識點分别是:

1、逗号表達式的值怎麼求

2、printf()函數的傳回值

來分析分析:

逗号表達式的值是最後一個逗号後面的表達式的值,而該語句逗号後面的表達式是 printf(” Second = %d”, i),也就是for循環的判斷語句其實是要判斷 printf(” Second = %d”, i)是真還是假,那麼我們隻要知道printf(” Second = %d”, i)的值即可。

先提一個知識點,printf函數的傳回值是函數在标準輸出上輸出的實際字元的個數,根絕這點,我們可以知道printf(” Second = %d”, i)語句永遠不會為0,因為該語句必定會在螢幕輸出字元,那麼for循環的判斷語句就會一直是真,是以程式是個死循環。