printf的返回值
printf函数:
以一道经典的例题开始吧。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
printf("%d", printf("%d", printf("43")));
return 0;
}
最后输出是:4321。
为什么呢?
- 首先,编译器会先看到最后的printf(“43”),并且打印出“43”。
- 然后printf(“43”)会返回他刚才所打印的字符串的字符数量,打印了’4‘和’3‘两个字符,所以返回2
- 于是printf(“%d”, printf(“%d”, printf(“43”)))就等价于printf(“%d”,printf(“%d”,2))
- 同理,打印’2‘这个字符,这次只打印了一个字符,所以返回1
- 于是printf(“%d”,printf(“%d”,2))等价于printf(“%d”,1)
- 接下里就都知道了吧
标点符号,字母还有转义字符甚至是空格都是占一个字符的
自己测试了一下,一个汉字和一个中文标点符号都是占两个字符的
#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个