Рубрики

C | Петли и структура управления | Вопрос 13

Каким будет выход следующего сегмента программы на С? (GATE CS 2012)

char inchar = 'A';

switch (inchar)

{

case 'A' :

    printf ("choice A \n") ;

case 'B' :

    printf ("choice B ") ;

case 'C' :

case 'D' :

case 'E' :

default:

    printf ("No Choice") ;

}

(А) Нет выбора
(Б) Выбор А
(С) Выбор А
Вариант Б Нет выбора
(D) Программа не выдает результатов, поскольку она ошибочна

Ответ: (с)
Объяснение: В случае 'A' нет оператора break. Если кейс выполнен и не содержит break, то все последующие кейсы выполняются до тех пор, пока не будет найден оператор break. Вот почему все внутри коммутатора печатается.
Попробуйте следующую программу в качестве упражнения.

int main()
{
    char inchar = 'A';
    switch (inchar)
    {
    case 'A' :
        printf ("choice A \n") ;
    case 'B' :
    {
        printf ("choice B") ;
        break;
    }
    case 'C' :
    case 'D' :
    case 'E' :
    default:
        printf ("No Choice") ;
    }
}

Рекомендуемые посты:

C | Петли и структура управления | Вопрос 13

0.00 (0%) 0 votes