输入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
相关产品推荐
相关产品推荐

