You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌套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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:25:24