先看下面一段程序:
文末會給大家推薦幾本好書,希望能夠需要的朋友一點幫助!
#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.
3.
程序員面試寶典(第5版)
