C 关于printf scanf的返回值的问题思考

转载请注明出处https://blog.csdn.net/qq_40077114/article/details/80426250

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

猜你喜欢

转载自blog.csdn.net/qq_40077114/article/details/80426250