@Nikc7777

Почему код на Си пропускает «printf», без видимых причин?

Изучаю Си, вот попался код из книги Стивена Прата, где нарушена , на мой взгляд, последовательность выполнения блока. Сам код.
#include <stdio.h>
int main(void){
    char ch;
     while ((ch = getchar()) != '#'){
          if (ch != 'n'){
              printf ("step 1\n");
              if (ch == 'b')
                  break;
               else if (ch != 'c'){
                      if (ch != 'h')
                        printf( "step 2\n");
                      printf( "step 3\n"); 
                   }
               }
            }
            printf("Done\n");
             return 0;
       }

В данном примере не совсем понята вот эта часть кода :
if (ch != 'h')
                                                                                                     printf( "step 2\n");
                                                                                                    printf( "step 3\n");
"
почему при вводе знака "h", на консоль не выводится "step 2\n".
  • Вопрос задан
  • 423 просмотра
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Там условие выводить строку если она не равна h
для большего понимания можете переписать

// Если символ не равен h печатаем строку step 2
if (ch != 'h'){
                        printf( "step 2\n");
}
Ответ написан
Комментировать
@tex0
Вот тут я вам отформатировал ваш код.
Посмотрите внимательнее, что написано в блоке else if(...).
Буквально так - "если введённый символ не равен 'c', то -> если введенный символ не равен 'h' то выводим 'step 2'. Выводим 'step 3' "
Поэтому при вводе 'h' он пропускает печать фразы 'step 2'.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы