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

