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

C语言两种输入写法输出异常原因咨询(VS Code环境)

为什么第二种两数求和代码输出总是2?

问题核心出在你对scanf函数的返回值理解有误:

scanf的返回值不是你输入的数字,而是成功读取的输入项数量。比如用%i格式符读取单个整数时,只要输入合法(是整数),它就会返回1;如果输入不合法(比如输入字母),才会返回0或者EOF。

看你的第二种代码:

int first_number = scanf("%i", &first_number);

这里你把scanf的返回值(也就是1)直接赋值给了first_number,而不是让scanf把你输入的数值存入first_number。第二次调用scanf同样返回1,所以first_number + second_number就是1+1=2,这就是输出结果为2的原因。

反观第一种代码,你先声明变量,再通过scanf把输入的数值写入变量,变量里存储的是你实际输入的数字,所以求和结果完全符合预期。

如果想修正第二种代码,只需要去掉错误的赋值操作,改成先声明变量再调用scanf:

#include <stdio.h>
int main()
{
   int first_number, second_number;
   printf("Enter First Number: ");
   scanf("%i", &first_number);

   printf("Enter Second Number: ");
   scanf("%i", &second_number);

   int sum = first_number + second_number;
   printf("Your Sum is %i.", sum);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:45:40