淺談printf函式的返回值
阿新 • • 發佈:2019-02-10
在一個群裡看到這樣一個題目:
#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語言庫中提供的大多數函式都是帶有返回值的,只是我們一般不去用罷了,但是有些題目就喜歡搞怪,所以這些不重要的函式的返回值我們用到了再去學習也不晚。