printf返回值的思考
#include <stdio.h>
int main(void)
{
printf("%d",printf("%d",printf("%d",43)));
}
其输出结果为
4321
过程:printf先将43打印出来,然后最右边的printf返回2,对应第二个%d打出2,在对应第三个%d打出1。
原因:printf接收打印的内容返回要打印的长度
-
拓展
#include <stdio.h> int main(void) { printf("%d",printf("%d\n",printf("%d\n",43))); }
其结果是?
结果为
43
3
3
原因:\n也算同样的长度。同时打印换行。
scanf的返回值思考
之前一直没有思考的问题,后来在思考printf的返回值时受了启发,于是自己写了段简单代码验证自己的想法。
#include <stdio.h>
int main(void)
{
int a,b;
b=scanf("%d,&a); //此时我输入5
printf("%d",b);
}
结果打印几?
结果为1
后我输入A
结果为0
原因:通过scanf函数的返回值和指定输入数据的个数(由格式符决定)的比较,可以判断数据输入是否成功。
- 拓展
如果在scanf的时候在终端输入ctrl+d,那么scanf的返回值将是-1=EOF