关于C语言中的《scanf》和《printf》函数的返回值

发布时间 2023-07-11 20:56:27作者: 若达萨罗

一,scanf

C语言中的scanf函数的返回值类型是int,表示你正确输入参数的个数

代码如下:

#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int num = scanf("%d%d",&a, &b);
	printf("num = %d\n", num);

	return 0;
}

一,printf

C语言中的printf函数的返回值类型是int,表示你输入的字符个数
看代码:

#include <stdio.h>

int main()
{
	printf("%d", printf("%d", printf("%d", 16)));
	printf("\n");
	
	return 0;
}

image

我们看一共有三个printf打印语句,那么就会打印输出三个结果。在printf函数中参数是以入栈的顺序进入的,所以我们要从右往左看,第一个printf语句是printf("%d",16);所以它会直接打印出16这个结果,而它此时的返回值是这个16整型数的字符个数也就是2,所以第一个printf函数的返回值是2,所以第二个printf语句printf("%d", printf("%d", 16))里的参数printf("%d", 16))的结果就为2,所以第二个printf语句简化后为printf("%d",2)。自然这个打印语句的结果就为2,此时它的返回值就是这个结果的字符个数也就是1,所以1就会作为第三个printf的参数传入其中,简化后就为printf("%d",1)它的结果就为1。所以这就是为什么控制台最后打印的是1621