解釋爲什麼輸出10會出現?解釋爲什麼輸出10會出現在c程序中
main()
{
for(printf("1");!printf("0");printf("2"))
{
printf("hello");
}
}
輸出:
10
解釋爲什麼輸出10會出現?解釋爲什麼輸出10會出現在c程序中
main()
{
for(printf("1");!printf("0");printf("2"))
{
printf("hello");
}
}
輸出:
10
據其printf(3)手冊頁,所述printf
函數返回
打印的字符的數目(不包括用於結束輸出爲字符串的空字節)
所以, for
的初始化部分運行一次:printf("1")
;它將1
字符放入stdout
的緩衝區中。然後評估條件!printf("0");
,因爲printf("0")
被評估,它將0
字符放入stdout
的緩衝區中並返回輸出字符的數量,即1
,因此條件爲假,並且存在for
循環。
最後,main
正在退出程序,那時只有stdout
緩衝區被刷新。
要迂迴,您的程序會出現不同的行爲,因爲不太可能的原因,stdout
無法成功寫入。
因爲在printf(「1」)它會按原樣執行語句。 然後printf(「0」)在屏幕上打印0並返回值1.當您否定它時,它會在C中給出一個等於false的值,以便for循環滿足其結束條件並退出。
閱讀關於(;;)如何工作的信息。谷歌提出的[第一個鏈接](http://cprogramminglanguage.net/c-for-loop-statement.aspx)是合理的。 –
想想for循環是由哪些部分組成的,以及'!printf()'的計算結果。 – chris
我沒有回答這個問題,但我不明白你爲什麼這麼問。如果你找不到(也就是尋找和搜索)答案,你就不應該編程並做一些其他事情。你的老師可能想要鍛鍊你的技能(所以要求幫助會適得其反)。 –