首页 > 解决方案 > c语言中的函数

问题描述

我是 c 新手,当我在 c 中编写一个基本程序时,它显示了两个答案 ..1)当我分别声明和初始化变量时 2)当我在同一行中声明和初始化变量时。谁能告诉我请问我的错吗?

#include <stdio.h>
#include <stdlib.h>
void sum()
{
    printf("enter the numbers to be added\n");
    int x=scanf("%d",&x);
    int y=scanf("%d",&y);
    int sum=(x+y);
    printf("the sum of two numbers is %d\n",sum);

}
int main()
{
    printf("welcome to addition calculator\n");
    sum();
    return 0;
}

当我给出 3 和 4 作为输入时,我得到 2 作为答案

标签: cfunction

解决方案


scanf("%d", &x)将读取的数字存储到x. 它将返回成功读取字段的数量(1在您的情况下)。如果您之后将该返回值分配给x,您将覆盖用户输入的任何内容1。并1 + 1生产2

解决方案:

int x;
int y;
scanf("%d",&x);
scanf("%d",&y);

正如 David 在评论中提醒的那样,您可能想要检查是否已成功读取所有字段。例如,在您的情况下,如果您输入非数字,scanf则不会将该%d字段解析为成功,并将返回0. 您可以测试此结果以确保用户做了他们应该做的事情:

int x;
int y;
while (scanf("%d", &x) != 1) {
  printf("Enter a NUMBER, you illiterate buffoon!\n");
}
while (scanf("%d", &y) != 1) {
  printf("Enter a NUMBER! You managed with %d, how is this suddenly hard now?!\n", x);
}

推荐阅读