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

一、返回值

(1)返回值类型

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

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

 (2)返回的内容

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

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

其运行结果如下图所示:

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

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

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

也就是会先打印 43

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

此时的代码等价于

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

因此整个输出结果就是432

二、相关示例

(1)

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

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

正确结果:4321

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

(2)

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

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

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

这次做对了吗? 

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

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

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

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

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

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

第三次打印2*

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

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

(3)

写一段代码使

第一行输出Hello World!

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

下面是正确代码

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

这是运行结果:

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

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

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

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

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值