我的代碼:爲什麼這段代碼返回垃圾值?
void main()
{
while(1){
if(printf("%d",printf("%d")))
break;
else
continue;
}
}
我知道printf()
返回字符printed.So數,爲什麼上面的代碼輸出Garbage values
時候就應該輸出1. 請解釋。
謝謝。
我的代碼:爲什麼這段代碼返回垃圾值?
void main()
{
while(1){
if(printf("%d",printf("%d")))
break;
else
continue;
}
}
我知道printf()
返回字符printed.So數,爲什麼上面的代碼輸出Garbage values
時候就應該輸出1. 請解釋。
謝謝。
由於第二printf
丟失,它應該是打印的數量...
BTW,不希望看到只有1,你會看到在此之前,第二printf
印刷數量。例如。如果你的代碼是
printf("%d",printf("%d", 7));
你會看到71;第7將會打印出來,然後1
「之前你會看到第二個printf打印的號碼。」這是什麼價值? – user2708039
它不是422? printf返回寫入的字符數,所以printf(「%d」,42)應該返回2. –
@NigelHarper,對,它是1的問題,但我想打印42並且不停地思考。修復了答案。 – nickie
因爲你沒有提供內部printf
的%d
請與參數:
if(printf("%d",printf("%d ",3)))
,請注意我用了一個空間%d
後現在你會看到
3 2
最後2
因爲額外的空間
謝謝。但我仍然不明白爲什麼我的代碼給垃圾值? – user2708039
@ user2708039閱讀我的文章的第一行 '%d'是'printf'的格式說明符,它需要一個整數,因爲你沒有提供一個你會得到未定義的行爲 – P0W
printf("%d",printf("%d"))
等於
int i = printf("%d");
printf("%d",i);
然而,int i =printf("%d");
線將printf的垃圾的價值,因爲你不給它需要的值。
最左邊的printf的第二個參數應該是一個數字。你已經給它傳遞了一個函數printf。這就像試圖把軟糖熊放進你的油箱,這樣它就會運行。請閱讀printf的內容:http://www.cplusplus.com/reference/cstdio/printf/ –
您是否熟悉'printf'的參數約定?如果是這樣,一點代碼檢查就可以解決你的問題。在「while」循環中使用它的目的是什麼? – lurker