1. 程式人生 > >淺談printf函式的返回值

淺談printf函式的返回值

在一個群裡看到這樣一個題目:
#include <stdio.h>
int main()
{
    int i = 0;
    for(i=0; i<10; i++)
    {
        if( printf("%d\n", i * i) > 2 ) 
        {
            printf("    i = %d\n", i);
        }
    } 
 return 0;
}

下面附上輸出結果:


最開始迷惑在這句話    if( printf("%d\n", i * i) > 2 ) 中的printf("%d\n", i * i),這玩意兒到底是多少?

百度了一下,printf的返回值是它輸出的字元數.

比如printf("abcd\n"),這是printf返回的應該是5,因為有5個字元,分別是a,b,c,d,\n(注意\n是一個字元,轉義字元)

printf("%d\n", i * i)這個函式返回的字元數由兩部分組成:%d和\n。

如果%d代表的數字是100,那麼%d就是3個字元,加上\n這個字元,一共4個字元,返回值為4。

i*i可能等於0,1,4,9,16,25,36,49,64,81,所以printf返回的字元可能是2個,3個。

其實C語言庫中提供的大多數函式都是帶有返回值的,只是我們一般不去用罷了,但是有些題目就喜歡搞怪,所以這些不重要的函式的返回值我們用到了再去學習也不晚。