printf函數簡解!
今天上課看到了一段有趣的代碼,具體代碼如下:
#include<stdio.h>
int main()
{
int i = 43;
printf("%d\n",printf("%d",printf("%d", i)));
return 0;
}
當時看到這段代碼,覺得很有意思,但是不知道最後能跑出來什麼結果。因爲在我看來第一次 printf 的函數輸出肯定是43,但是第二次的 printf 就不確定了。遂直接在手機上敲了代碼,跑了下,結果爲: 4321 。懵逼了,我直接呆了~~~
各種不瞭解,最後在MSDN上查了下,才瞭解了原因。
printf 函數,其作用是 產生格式化標準輸出,其基本格式爲: int printf(const char *format,[ argument],...)
最重要的是其函數返回值:
英語還行的話,可以看懂這段話(不懂的話,那就用翻譯軟件)。這段話表達的意思是:
printf 函數的返回值是每一個返回打印的字符數,如果出現錯誤則返回負值。
好了,真相大白。
第一次 printf 函數返回的是 i 的值 即43,返回了43;
第二次 printf 返回的是43的字符數,43是兩個字符,所以第二次返回了2;
第三次 printf 返回的是2的字符數,2是一個字符,所以第三次返回的是1。
類似於 printf 函數這樣最基本函數,每個人都在用,尤其是像我這樣的初學者,更是使用了n遍,但是直到今天,我才真正瞭解了 printf 函數。
喫一塹長一智。學到了這點知識,分享出來,希望和我一樣的初學者也能對函數深入理解,不要只懂皮毛!