我正在尝试在C中编写一个函数来对两个数字求和,但我没有得到预期的答案

时间:2016-05-17 00:27:30

标签: c function

我一直在努力做一个总结两个数字的程序;我想用一个函数来做到这一点。该函数称为“sum”。使用下面显示的代码,我得到“总和为0”。我做错了什么?

#include <stdio.h>

int sum()

{
    int a, b;
    int answer;
    answer = a+b;
    return 0;
}

int main()
     {
        int var_a,  var_b;
        int result;

        printf (" first number \n");
        scanf ("%i",&var_a);
        printf ("second number \n");
        scanf ("%i",&var_b);
            result = sum(var_a,var_b);

        printf(" The sum is %i", result);

        return 0;       
     }

3 个答案:

答案 0 :(得分:4)

您的功能sum

有两个问题

首先,返回值应为answer,而不是0,否则无论您如何调用此函数,它总是会给您0.所以将return 0;更改为{{1} }。

其次,当您执行return answer; sum时,您清楚地意识到函数result = sum(var_a,var_b);会从外部获取参数。因此,您应该相应地定义函数main,如:

sum

答案 1 :(得分:2)

int sum()
{
    int a, b;
    int answer;
    answer = a+b;
    return 0;
}

这个功能有什么作用?我们来看看:

  • 声明abanswer并且不为它们指定值(因此它们可以有任何值,可能是0,可能是635621112)。
  • answer设置为a+b - 两个垃圾值的总和仍然是垃圾值。
  • 返回0

所以基本上,它会添加两个未知值,然后忽略它的结果并返回0.当你写return 0;

时,它返回0应该不足为奇了

如果你想让ab成为函数的参数,那么函数应该像这样开始:

int sum(int a, int b)
{
    int answer;

如果您想返回answer的值,请将return 0;更改为return answer;

答案 2 :(得分:-1)

您可以使用用户定义的函数,确保您用于变量的数据类型 这是一个简单的例子

int AddTwoNumbers(int a, int b)
{
    int result;
    result=a+b;
    return result;
}

现在您可以在主函数

中调用该函数
int main(){
  int a=10,b=20;
  printf("The sum is:%d", AddTwoNumbers(a,b));
  return 0;
}