Урок 4 – switch

В C\C++ понякога е по удобно да използваме switch вместо if – else if – if, като както знаем else if може да се използва многократно между if и else.
Има няколко особености които трябва да знаем за switch:

  • Ако в даден case няма break изпълнението ще продължи докато срещнем break. Т.е. може да изпълним повече от един case
  • контролната променлива трябва да е целочислена, т.е. не може да използваме float, но пък можем char(неявно превръщане)
  • default е специален case, в който се влиза ако не “ударим” нито един от case-овете
1
2
3
4
5
6
7
8
9
10
11
12
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;  
}

Същия пример но написан без switch би изглеждал така:

1
2
3
4
5
6
7
8
9
10
int x = 2;
if(x==1){
    printf("Choice is 1");  
}else if(x==2){
    printf("Choice is 2");    
}else if(x==3){
    printf("Choice is 3");    
}else{
    printf("Choice other than 1, 2 and 3");
}

Следва един пример защо понякога може да ни се наложи да не поставяме break във всеки case – например когато искаме един и същи резултата при две или повече стойности (в случая искаме едно и също при малка и голяма буква – ‘а’ или ‘А’)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
char x = 'a';
switch (x)
{
case 'a':
case 'A':
    printf("Choice is A");
    break;
case 'b':
case 'B':
    printf("Choice is B");
    break;
default: printf("Choice is something else");
    break;  
}