switch…case в C (изявление Switch в C) с примери

Какво е Switch Statement в C?

Изявление за превключване в C тества стойността на променлива и я сравнява с множество случаи. След като се намери съвпадението на случая, се изпълнява блок от оператори, свързани с този конкретен случай.

Всеки случай в блок на превключвател има различно име/номер, който се нарича идентификатор. Стойността, предоставена от потребителя, се сравнява с всички случаи в блока за превключване, докато се намери съвпадението.

Ако съвпадение на регистър НЕ бъде намерено, тогава операторът по подразбиране се изпълнява и контролата излиза от блока за превключване.

Синтаксис за превключване на главни и малки букви

Общият синтаксис за това как превключването на регистъра се изпълнява в програма на "C" е както следва:

switch( expression )
{
	case value-1:
			Block-1;
			Break;
	case value-2:
			Block-2;
			Break;
	case value-n:
			Block-n;
			Break;
	default:
			Block-1;
			Break;
}
Statement-x;
  • Изразът може да бъде цяло число или символен израз.
  • Стойност-1, 2, n са етикети на случай, които се използват за идентифициране на всеки случай поотделно. Не забравяйте, че етикетите на case не трябва да са еднакви, тъй като това може да създаде проблем при изпълнение на програма. Да предположим, че имаме два случая със същия етикет като '1'. След това, докато изпълнявате програмата, случаят, който се появява първи, ще бъде изпълнен, въпреки че искате програмата да изпълни втори случай. Това създава проблеми в програмата и не предоставя желания резултат.
  • Етикетите за регистър винаги завършват с двоеточие ( : ). Всеки от тези случаи е свързан с блок.
  • Един блок не е нищо друго освен множество изрази, които са групирани за конкретен случай.
  • Всеки път, когато превключвателят се изпълнява, стойността на тестовия израз се сравнява с всички случаи, които сме дефинирали в превключвателя. Да предположим, че тестовият израз съдържа стойност 4. Тази стойност се сравнява с всички случаи до случай, чийто етикет четири бъде намерен в програмата. Веднага щом бъде открит случай, блокът от инструкции, свързани с този конкретен случай, се изпълнява и контролът излиза от превключвателя.
  • Ключовата дума break във всеки случай показва края на конкретен случай. Ако не поставим прекъсването във всеки случай, тогава въпреки че конкретният случай е изпълнен, превключвателят в C ще продължи да изпълнява всички случаи, докато не бъде достигнат краят. Това не трябва да се случва; следователно винаги трябва да поставяме ключова дума break във всеки случай. Break ще прекрати случая, след като бъде изпълнен и контролът ще изпадне от превключвателя.
  • Случаят по подразбиране е незадължителен. Всеки път, когато стойността на тестовия израз не съответства на нито един от случаите вътре в превключвателя, тогава ще бъде изпълнена стойността по подразбиране. В противен случай не е необходимо да пишете default в превключвателя.
  • След като превключвателят бъде изпълнен, контролът ще премине към израза-x и изпълнението на програма ще продължи.

Блок-схема на изявление за превключване

Следващата диаграма илюстрира как се избира кутия в случай на превключване:

Блок-схема на изявление за превключване
Как работи Switch

Пример за превключване на случай в C

Следната програма илюстрира използването на switch:

#include <stdio.h>
    int main() {
        int num = 8;
        switch (num) {
            case 7:
                printf("Value is 7");
                break;
            case 8:
                printf("Value is 8");
                break;
            case 9:
                printf("Value is 9");
                break;
            default:
                printf("Out of range");
                break;
        }
        return 0;
    }

Изход:

Value is 8

Пример за превключване на случай в C

  1. В дадената програма сме обяснили инициализиран a променлив число със стойност 8.
  2. Конструкция превключвател се използва за сравняване на стойността, съхранена в променлива num и изпълнение на блока от изрази, асоцииран със съвпадащия регистър.
  3. В тази програма, тъй като стойността, съхранена в променлива num, е осем, превключвател ще изпълни случая, чийто етикет на случай е 8. След изпълнение на случая контролът ще изпадне от превключвателя и програмата ще бъде прекратена с успешен резултат от отпечатване на стойността на изходния екран.

Опитайте да промените стойността на променливата num и забележете промяната в изхода.

Например, ние разглеждаме следната програма, която е по подразбиране:

#include <stdio.h>
int main() {
int language = 10;
  switch (language) {
  case 1:
    printf("C#\n");
    break;
  case 2:
    printf("C\n");
    break;
  case 3:
    printf("C++\n");
    break;
  default:
    printf("Other programming language\n");}}

Изход:

Other programming language

Когато работите с превключване на регистър в C, вие групирате няколко случая с уникални етикети. Трябва да въведете оператор break във всеки случай, за да се разклоните в края на оператор switch.

Незадължителният случай по подразбиране се изпълнява, когато няма други съвпадения.

Разглеждаме следното изявление за превключване:

#include <stdio.h>
int main() {
int number=5;
switch (number) {
  case 1:
  case 2:
  case 3:
    printf("One, Two, or Three.\n");
    break;
  case 4:
  case 5:
  case 6:
    printf("Four, Five, or Six.\n");
    break;
  default:
    printf("Greater than Six.\n");}}

Изход:

Four, Five, or Six.

Вложен превключвател в C

In C, можем да имаме вътрешен превключвател, вграден във външен превключвател. Също така константите на регистъра на вътрешния и външния превключвател може да имат общи стойности и без никакви конфликти.

Разглеждаме следната програма, в която потребителят трябва да въведе собствения си ID, ако ID е валиден, ще го помоли да въведе своята парола, ако паролата е правилна, програмата ще отпечата името на потребителя, в противен случай програмата ще отпечата Неправилно Парола и ако ID не съществува, програмата ще отпечата Неправилен ID

#include <stdio.h>
int main() {
        int ID = 500;
        int password = 000;
        printf("Plese Enter Your ID:\n ");
        scanf("%d", & ID);
        switch (ID) {
            case 500:
                printf("Enter your password:\n ");
                scanf("%d", & password);
                switch (password) {
                    case 000:
                        printf("Welcome Dear Programmer\n");
                        break;
                    default:
                        printf("incorrect password");
                        break;
                }
                break;
            default:
                printf("incorrect ID");
                break;
        }
}

Изход:

Plese Enter Your ID:
 500
Enter your password:
 000
Welcome Dear Programmer

Вложен превключвател в C

  1. В дадената програма сме обяснили инициализирани две променливи: ID и парола
  2. Конструкция на външен превключвател се използва за сравняване на стойността, въведена в ID на променливата. Той изпълнява блока от изрази, свързани със съвпадащия случай (когато ID==500).
  3. Ако блоковият оператор се изпълни със съвпадащия регистър, се използва вътрешен превключвател за сравняване на стойностите, въведени в променливата парола, и изпълнение на операторите, свързани със съвпадащия регистър (когато парола==000).
  4. В противен случай превключването на регистър ще задейства регистъра по подразбиране и ще отпечата подходящия текст относно очертанията на програмата.

Защо се нуждаем от кутия Switch?

Има един потенциален проблем с оператор if-else което означава, че сложността на програмата се увеличава, когато броят на алтернативните пътища се увеличава. Ако използвате няколко конструкции if-else в програмата, програмата може да стане трудна за четене и разбиране. Понякога дори може да обърка разработчика, който сам е написал програмата.

Решението на този проблем е командата switch.

Правила за изявление за превключване

  • Един израз винаги трябва да се изпълнява до резултат.
  • Етикетите на случай трябва да бъдат постоянни и уникални.
  • Етикетите за регистър трябва да завършват с двоеточие ( : ).
  • Във всеки случай трябва да присъства ключова дума break.
  • Може да има само един етикет по подразбиране.
  • Можем да вложим множество изрази за превключване.

Oбобщение

  • Превключването е конструкция за вземане на решения в "C-
  • Превключвател се използва в програма, където са включени множество решения.
  • Превключвателят трябва да съдържа изпълним тестов израз.
  • Всеки случай трябва да включва ключова дума break.
  • Етикетът на случая трябва да бъде постоянен и уникален.
  • По подразбиране не е задължително.
  • Множество изрази за превключване могат да бъдат вложени един в друг.