C语言printf的返回值??

printf的返回值

printf函数:

以一道经典的例题开始吧。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	printf("%d", printf("%d", printf("43")));
	return 0;
}

最后输出是:4321。
为什么呢?

  1. 首先,编译器会先看到最后的printf(“43”),并且打印出“43”。
  2. 然后printf(“43”)会返回他刚才所打印的字符串的字符数量,打印了’4‘和’3‘两个字符,所以返回2
  3. 于是printf(“%d”, printf(“%d”, printf(“43”)))就等价于printf(“%d”,printf(“%d”,2))
  4. 同理,打印’2‘这个字符,这次只打印了一个字符,所以返回1
  5. 于是printf(“%d”,printf(“%d”,2))等价于printf(“%d”,1)
  6. 接下里就都知道了吧

标点符号,字母还有转义字符甚至是空格都是占一个字符的
自己测试了一下,一个汉字和一个中文标点符号都是占两个字符的

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int m = 0;
	m = printf("南山邮专。\n");
	printf("%d", m);
	return 0;
}//返回值是是11,其中,四个汉字加上一个句号10个字符,再加上一个转义字符就是11个
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值