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

输入25时,printf("%d\n",scanf("%d",&i))的输出为何是1?

为什么输入25时程序输出1?

嘿,这其实是个很常见的新手误区——你搞混了scanf函数的返回值和它读取到的内容!让我给你拆解清楚:

核心原因:你打印的是scanf的返回值,不是输入的数值

你的代码里,printf("%d\n",scanf("%d",&i));这一行,是直接把scanf函数的返回值输出了,而不是变量i里存的输入值。

scanf的返回值规则是什么?

scanf函数的返回值代表成功读取并完成赋值的输入项个数:

  • 当你输入25时,"%d"格式符匹配到了一个有效的整数,成功把它存入了变量i,也就是完成了1个输入项的读取,所以scanf返回1,这就是你看到的输出。
  • 如果输入的不是整数(比如输入abc),scanf会返回0,因为没有成功匹配任何输入项;如果遇到输入结束(比如按下Ctrl+D),它会返回EOF(通常是-1)。

如果你想打印输入的25,应该怎么改?

把代码改成这样就可以实现你预期的效果:

#include <stdio.h>
#include <stdlib.h>
int main() {
    int i;
    scanf("%d",&i); // 先将输入读取到变量i中
    printf("%d\n",i); // 再打印变量i的内容
    return 0;
}

内容的提问来源于stack exchange,提问作者saurabh kishor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 06:42:51