Обратите внимание, что вы ввели 3 символа - '1', '2'
и символ новой строки (\n
).Учитывая это, давайте проследим, что делают ваши программы:
Первый фрагмент:
Read '1' ->
Print '1' ->
Read '2' ->
Print "hello\n" ->
Print '2' ->
Read '\n' ->
Print "hello\n" ->
Print '\n' ->
wait for more input
Итак, последнее, что напечатано, - это новая строка.
Второй фрагмент:
Read '1' ->
Print '1' ->
Print "hello\n" ->
Read '2' ->
Print '2' ->
Print "hello\n" ->
Read '\n' ->
Print '\n' ->
Print "hello\n" ->
wait for more input.
Итак, сначала печатается символ новой строки, а затем "hello"
.
Короче говоря, оба фрагмента выполняют одинаковое количество итераций, но в первом последний printf(" hello\n")
блокируется getchar
когда больше нет ввода.Что не так во втором фрагменте.