Значит, когда я ввел 4, во входном буфере присутствовало 3?
Нет, 3 были израсходованы.
Вы не можете его перечитать ( как int или иначе).
Если вы вводите "3<enter>"
, 3 будет использовано, а буфер содержит только "<enter>"
. Затем вы набираете "4<enter>"
, которое добавляется в буфер. Второй scanf (*) использует начальный ввод и 4 оставшихся "<enter>"
для следующей операции ввода.
(*) спецификатор преобразования "%d"
пропускает необязательные ведущие пробелы и (пытается) преобразовывает остальные ввода в целое число (если ошибок нет).