关于printf函数返回值及其示例

一、返回值

(1)返回值类型

      printf函数的返回值类型int。也就是说在进行嵌套使用时,其打印格式是%d

#include 
int main()
{
     printf("%d",printf("%d",1);
     return 0;
}

 (2)返回的内容

printf函数返回值返回的是打印字符个数

#include 
int main()
{
       printf("%d", printf("%d",43) );
       return 0;  
}

其运行结果如下图所示:

关于printf函数返回值及其示例_第1张图片

 这里还涉及到了函数的嵌套调用。

当执行最外层的printf的时候,其打印内容是printf("%d",43)的返回值

而在最外层printf函数得到printf("%d",43)的返回值之前,会先执行printf("%d",43)

也就是会先打印 43

43共2个字符,所以printf("%d",43)返回整型2

此时的代码等价于

#include 
int main()
{
       printf("%d", 2 );
       return 0;  
}

因此整个输出结果就是432

二、相关示例

(1)

请写出下列代码的输出结果:

#include 
int main()
{
    printf("%d",printf("%d",printf("%d",43)));
    return 0;
} 

正确结果:4321

关于printf函数返回值及其示例_第2张图片

 这并不困难,我们再加点难度

(2)

请写出下列代码的输出结果:

#include 
int main()
{
    printf("%d ", printf("%d ", printf("%d ", 43)));
    return 0;
}

正确答案是:43 3 2    (43和3和2之间都各有个空格)

关于printf函数返回值及其示例_第3张图片

这次做对了吗? 

其实这里放了个陷阱:打印格式多了个空格,而空格也是一个字符

我们在上面讲了,printf函数返回的内容是打印的字符的个数

也就是说像'\n'  ' '(空格)   这些字符都会算在个数里面

为了使结果明显,我们暂时将*代替空格

具体详解:第一次打印43*;一共有4、3和空格(*)这三个字符,返回3

第二次打印3*;一共有3和空格(*)这两个字符,返回2

第三次打印2*

所以整个代码运行下来的输出结果就是:43*3*2*

把*换回空格就是最开始的结果:43 3 2 啦:)

(3)

写一段代码使

第一行输出Hello World!

第二行输出Hello World!的返回值

下面是正确代码

#include 
int main()
{
    int n = 0;
    n = printf("Hello World!");
    printf("\n");
    printf("%d", n);
    return 0;
}

这是运行结果:

关于printf函数返回值及其示例_第4张图片

 因为要实现分行,而分行字符'\n'会影响printf的返回值

所以为了正确打印Hello World!的返回值,就要将'\n'单独打印

当然,更熟练掌握printf函数用法的话,还能将代码写的更短,甚至不用额外创建一个变量

关于printf函数返回值及其示例_第5张图片

 只要在打印格式里加一个\n就可以啦,同时还用到了函数的嵌套调用。

你可能感兴趣的:(c语言初阶的学习,c语言)