printf函數簡解!

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 函數。
喫一塹長一智。學到了這點知識,分享出來,希望和我一樣的初學者也能對函數深入理解,不要只懂皮毛!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章