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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值