Рубрики

Интересные факты о переключателе в Си

Обязательное условие — оператор Switch в C
Переключатель является оператором управления, который позволяет значению изменять контроль выполнения.

// Ниже приведена простая программа для демонстрации синтаксиса переключателя.
#include <stdio.h>

int main()

{

   int x = 2;

   switch (x)

   {

       case 1: printf("Choice is 1");

               break;

       case 2: printf("Choice is 2");

                break;

       case 3: printf("Choice is 3");

               break;

       default: printf("Choice other than 1, 2 and 3");

                break;  

   }

   return 0;

Выход:

Choice is 2

Ниже приведены некоторые интересные факты о заявлении переключателя.

1) Выражение, используемое в switch, должно быть целочисленным типом (int, char и enum). Любой другой тип выражения не допускается.

// float не разрешен в switch
#include <stdio.h>

int main()

{

   float x = 1.1;

   switch (x)

   {

       case 1.1: printf("Choice is 1");

                 break;

       default: printf("Choice other than 1, 2 and 3");

                break;  

   }

   return 0;

Выход:

 Compiler Error: switch quantity not an integer

В Java, String также разрешен в switch (см. Это )

2) Все операторы, следующие за соответствующим регистром, выполняются до тех пор, пока не будет достигнут оператор break.

// Нет перерыва во всех случаях
#include <stdio.h>

int main()

{

   int x = 2;

   switch (x)

   {

       case 1: printf("Choice is 1\n");

       case 2: printf("Choice is 2\n");

       case 3: printf("Choice is 3\n");

       default: printf("Choice other than 1, 2 and 3\n");

   }

   return 0;

Выход:

Choice is 2
Choice is 3
Choice other than 1, 2 and 3

// В некоторых случаях нет перерыва
#include <stdio.h>

int main()

{

   int x = 2;

   switch (x)

   {

       case 1: printf("Choice is 1\n");

       case 2: printf("Choice is 2\n");

       case 3: printf("Choice is 3\n");

       case 4: printf("Choice is 4\n");

               break;

       default: printf("Choice other than 1, 2, 3 and 4\n");

                break;

   }

   printf("After Switch");

   return 0;

}

Выход:

Choice is 2
Choice is 3
Choice is 4
After Switch

3) Блок по умолчанию можно разместить где угодно. Положение по умолчанию не имеет значения, оно все равно выполняется, если совпадение не найдено.

// Блок по умолчанию находится над другими случаями.
#include <stdio.h>

int main()

{

   int x = 4;

   switch (x)

   {

       default: printf("Choice other than 1 and 2");

                break;        

       case 1: printf("Choice is 1");

               break;

       case 2: printf("Choice is 2");

                break;

   }

   return 0;

}

Выход:

Choice other than 1 and 2

4) Интегральные выражения, используемые в метках, должны быть константными выражениями

// Программа с переменными выражениями в метках
#include <stdio.h>

int main()

{

    int x = 2;

    int arr[] = {1, 2, 3};

    switch (x)

    {

        case arr[0]: printf("Choice 1\n"); 

        case arr[1]: printf("Choice 2\n");

        case arr[2]: printf("Choice 3\n");

    }

    return 0;

}

Выход:

Compiler Error: case label does not reduce to an integer constant

5) Операторы, написанные выше, никогда не выполняются. После оператора switch управление переходит к соответствующему случаю, а операторы, написанные до регистра, не выполняются.

// Заявления перед всеми делами никогда не выполняются
#include <stdio.h>

int main()

{

   int x = 1;

   switch (x)

   {

       x = x + 1;  // Этот оператор не выполняется

       case 1: printf("Choice is 1");

               break;

       case 2: printf("Choice is 2");

                break;

       default: printf("Choice other than 1 and 2");

                break;                   

   }

   return 0;

Выход:

Choice is 1

6) Две метки регистра не могут иметь одинаковое значение

// Программа, в которой две метки регистра имеют одинаковое значение
#include <stdio.h>

int main()

{

   int x = 1;

   switch (x)

   {

       case 2: printf("Choice is 1");

               break;

       case 1+1: printf("Choice is 2");

                break;

   }

   return 0;

Выход:

Compiler Error: duplicate case value

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

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

Интересные факты о переключателе в Си

0.00 (0%) 0 votes