функции в c программировании - PullRequest
0 голосов
/ 29 января 2019

Я новичок в 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;
}

Я получаю 2 в ответ, когда я дал 3 и 4 в качестве входных данных

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Функция scanf () возвращает 1, если она успешно сканирует, иначе она возвращает 0. Поэтому, когда вы ставите целое число в x, scanf () возвращает 1 и присваивает его x (x = 1).То же самое для y (y = 1).

При x = 1 и y = 1.сумма = 2

0 голосов
/ 29 января 2019

scanf("%d", &x) сохранит прочитанное число в x.Он вернет количество успешно прочитанных полей (1 в вашем случае).Если после этого вы присваиваете это возвращаемое значение x, вы перезаписываете то, что пользователь ввел с этим 11 + 1 производит 2.

Решение:

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

Как напоминает Дэвид в комментариях, вы можете проверить, что все поля были успешно прочитаны.Например, в вашем случае, если вы введете не цифру, 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...