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 函数。
吃一堑长一智。学到了这点知识,分享出来,希望和我一样的初学者也能对函数深入理解,不要只懂皮毛!