我發現一個問題,在互聯網這樣的,有一個ç程序,它喜歡 -
爲什麼printf()打印這樣的東西?
int main(){
int a = 123;
printf("%d", printf("%d",a));
return 0;
}
我在代碼塊運行這個程序,並找到導致。
我的問題是,爲什麼printf()的行爲是這樣的?
我發現一個問題,在互聯網這樣的,有一個ç程序,它喜歡 -
爲什麼printf()打印這樣的東西?
int main(){
int a = 123;
printf("%d", printf("%d",a));
return 0;
}
我在代碼塊運行這個程序,並找到導致。
我的問題是,爲什麼printf()的行爲是這樣的?
參見printf
是返回int
的函數。其中int
是印數characters
。
這是一個printf
原型
int printf(const char *restrict format, ...)
按照您的程序:
printf("%d", printf("%d",a));
printf("%d",a)
其中a
爲123
,所以它打印123
並返回3
和printf("%d", printf("%d",a));
成爲printf("%d",3);
所以,沖印3
單獨
所以你的輸出是:
1233
打破它,理解它。 printf函數的返回值 成功時,是成功寫入的字符總數。
printf("%d",a)
成功寫入3個字符,然後返回值作爲第二個參數被傳遞到原始呼叫作爲一個參數被評估
printf("%d", 3);
二printf
被傳遞,然後其結果被傳遞在所述外printf
。
printf總是返回字符數。由於a = 123意味着3個字符,所以輸出即爲1233.您將從這個例子中理解。
int main(){
int a = 123;
int b=printf("%d",a);
printf("\n%d", b);
return 0;
}
好奇:你期望打印什麼? – chux
我沒想到什麼。我只是在代碼塊中運行代碼並找出這樣的輸出。所以我很好奇,爲什麼? @chux –