有趣的for循环
#include <stdio.h>
int main()
{int i = 0;for(i = 0, printf(" First = %d", i);i<10, printf(" Second = %d", i);i++, printf(" Third = %d", i)){printf(" Fourth = %d", i);}system("pause");return 0;
}
這段代碼會輸出什么?我說死循環你會信?
上面是我在某一時刻截取的屏幕輸出,可以看到此時的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循環的判斷語句就會一直是真,所以程序是個死循環。
總結
- 上一篇: 计算机辅助设计还需要手绘吗,西安电脑如此
- 下一篇: java thread 多线程_java