Почему следующая программа печатает 1 вместо того, что я ввожу в качестве ввода? - PullRequest
0 голосов
/ 27 марта 2020

Недавно я придумал это задание со следующим кодом:

#include <stdio.h>
void main()
{
  int i;
  printf("%d", scanf("%d",&i));
}

Ответы [ 2 ]

3 голосов
/ 27 марта 2020

Согласно справочной странице для scanf(),

"Эти функции возвращают количество элементов ввода, успешно сопоставленных и назначенных, которое может быть меньше, чем предусмотрено, или даже ноль в случае ошибки раннего сопоставления. "

Итак, он возвращает количество элементов , успешно сопоставленных и сохраненных ( не значение он сканировал), что в вашем случае равно 1. Затем printf() печатает это значение.

При этом для размещенной среды void main() должно быть по крайней мере int main(void).

0 голосов
/ 27 марта 2020

Это потому, что scanf при успешном выполнении возвращает 1. Если вы хотите напечатать 'i', сделайте это

#include
void main ()
{
int i;
scanf ("% d", & i)
printf ("% d", i);
}

...