2016-05-17 1 views
-2

Я пытался сделать программу, которая суммирует два числа; Я хочу использовать функцию для этого. Функция называется «суммой». С приведенным ниже кодом я получаю «сумма 0». Что я делаю не так?Я пытаюсь написать функцию в C, чтобы суммировать два числа, но я не получаю ожидаемого ответа

#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;  
    } 
+0

Функция 'sum' всегда возвращает' 0'. Вы устанавливаете 'answer', но не используете его. Почему бы не вернуть 'reply' вместо' 0'? Разве это не имеет смысла? –

+0

'int a = ..., b = ..., result = a + b;' – Jerfov2

ответ

3

Есть две проблемы с вашей функцией sum

Во-первых, возвращаемое значение должно быть answer, не 0, в противном случае, независимо от того, как вы называете эту функцию, она всегда дает 0. Таким образом изменить return 0; к return answer;.

Во-вторых, вам ясно известно, что функция sum принимает аргументы извне, когда вы делаете: result = sum(var_a,var_b); в вашем main. Таким образом, вы должны определить свою функцию sum соответственно нравится:

int sum(int a, int b) 

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

Что эта функция делать? Давайте посмотрим:

  • Объявляет a, b и answer и не присваивать им значения (так что они могли бы иметь какое-либо значение, может быть 0, может быть, 635621112).
  • Устанавливает answer в a+b - сумма двух значений мусора по-прежнему является значением для мусора.
  • Возврат 0.

Так в основном, это добавляет две неизвестные величины, а затем игнорирует результат, что и возвращает 0. Это не должно удивлять, что она возвращает 0, когда вы писали return 0;

Если вы хотите сделать a и b быть параметры вашей функции, то функция должна начинаться так:

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

и если вы хотите, чтобы вернуть значение answer, а затем изменить return 0; к return answer;

+1

Не возвращает ответ, возвращает 0. Вы можете исправить это. – UDKOX