scanf("%d", &x)
сохранит прочитанное число в x
.Он вернет количество успешно прочитанных полей (1
в вашем случае).Если после этого вы присваиваете это возвращаемое значение x
, вы перезаписываете то, что пользователь ввел с этим 1
.И 1 + 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);
}