printf函數的返回值


先看下面一段程序:

文末會給大家推薦幾本好書,希望能夠需要的朋友一點幫助!


#include <stdio.h>

int main()
{
int i = 123;
printf("%d\n",printf("%d",printf("%d",i)));
return 0;
}

printf函數里面又嵌入了printf函數,你認為此段程序會打印出什么?

程序的實際運行結果是:


對於這個運行結果,你怎么看?
我們來一步步分解printf函數,看看為啥會輸出這個結果。 

程序中的print函數是這樣寫的:
printf("%d\n",printf("%d",printf("%d",i))); 
一共有三個printf函數,我們可以使用一些代號來簡化這個printf函數,如下:
代號A: 
printf("%d",printf("%d",i));
代號B: 
printf("%d",i)

則程序代碼可以簡化為:
printf("%d\n",A); 那么我們就先來求A。
而A,又可以簡化為:
printf("%d",B);那么我們就先來求B。

B是 
 printf("%d",i),打印出“123”,即在運行結果中,你最先看到的是123。printf函數的返回值是printf實際控制輸出的字符數,那么打印的123 就是3個字符,因此printf("%d",i)返回的就是3,也就是B是3,那么,A就可以寫為printf("%d",printf("%d",3));打印出3,即在運行結果中,你緊接着會看到3。而打印出的3是1個字符,因此A就是1,那么printf("%d\n",A); 實際上就是printf("%d\n",1); 打印出1,即在運行結果中,你最后看到的就是1.




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM