printf返回值的意义(小白理解法)

#include<stdio.h>
int main()
{
	int t = 23;
	
	printf("%d\n", printf("%d", printf("%d", printf("%d", t))));
	putchar(10);

	printf("%d\n", printf("%d", printf("%d", t)));
	putchar(10);

	printf("%d\n", printf("%d", t));
	putchar(10);

	printf("%5d\n", printf("%-d", t));
	putchar(10);

	printf("%3d\n", printf("%5d", t));
	putchar(10);

	printf("%d\n", t);
	putchar(10);

	return 0;
}

运行结果如下图所示(为显示宽度)
在这里插入图片描述

猜想

  • printf函数从右至左,先读取参数,然后按照格式显示

百度百科:
int printf(const char *format, [argument]);
说明printf函数类型为整型,其返回值是整型值。
其值为printf实际控制输出的字符数。
printf函数实际上是将所有参数按字符输出

论证

  • printf("%d\n", t) 是正确(需要)的输出
  • printf("%d\n", printf("%d", t))
    printf("%5d\n", printf("%-d", t))
    printf("%3d\n", printf("%5d", t))
    第一个函数的值为232,23为我们需要的值,多出来的2就是实际输出的字符数。
    第二个函数先print 23(左对齐),2是实际字符数(返回值),但是在print “2” 时宽度要求是5个字符宽,默认右对齐。
    第三个函数先print 23 ,宽度要求是5,默认右对齐,此时前边这个printf的实际输出字符数是5(包括为扩充宽度填补的3个空格),故此时的返回值为5,宽度为3,默认右对齐。
  • printf("%d\n", printf("%d", printf("%d", t)))
    有了前边的铺垫,可以得到(从右至左),第一个返回值是2,第二个返回值是1(即第一个返回值的字符数)
  • printf("%d\n", printf("%d", printf("%d", printf("%d", t))))
    同理,第一个返回值是2,第二个返回值是1,第三个返回值是1
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值