嵌套printf调用为何输出132?Hello world长度为13个字符
为什么这段嵌套printf代码的输出是132?
嘿,这个问题的核心是要记住**printf函数的返回值是它成功打印到屏幕的字符总数**,咱们一步步拆解这段嵌套的代码就能搞懂了:
首先先把代码贴出来方便查看:
#include <stdio.h> void main() { printf("%d", printf("%d",printf("Hello world!\n"))); }
接下来从最内层的printf开始分析执行顺序:
第一步:执行最内层的
printf("Hello world!\n")
这个函数会在屏幕上打印字符串"Hello world!\n",已知这个字符串的长度是13个字符,所以执行完后,它会返回整数 13。这时候屏幕上已经输出了"Hello world!\n"(也就是带换行的"Hello world!")。第二步:执行中间层的
printf("%d", 13)
它的参数是最内层printf返回的13,所以这个函数会把数字13以十进制形式打印出来,也就是输出字符"13",总共2个字符。因此,这个printf的返回值是 2。第三步:执行最外层的
printf("%d", 2)
它的参数是中间层printf返回的2,所以会打印字符"2",总共1个字符,返回值是1。
现在把所有打印的内容连起来看:最内层先输出Hello world!\n,然后中间层输出13,最后外层输出2,所以完整的屏幕输出应该是:
Hello world! 132
你提到的输出是132,应该是只关注了换行之后的数字部分啦~
内容的提问来源于stack exchange,提问作者Dhruba Goswami
相关产品推荐
相关产品推荐

