Перерыв понимания проблемы - PullRequest
0 голосов
/ 05 ноября 2019

Может кто-нибудь, пожалуйста, найдите время и попытайтесь объяснить, как работает этот код, не понимая часть разрыва и как ответ в конце равен 0.

int a=3, x;
switch(a==5){
   case 0: x=0;break;
   case 1: x=1;break;
   case 3: x=3;break;
   case 5: x=5;break;
   default: x=7;
}
printf("%d",x);

Ответы [ 3 ]

3 голосов
/ 05 ноября 2019

Без break выполнение будет продолжаться от каждого случая к следующему (сквозной), и каждый путь в конечном итоге заканчивается на default и присваивается 7 x.

Также обратите внимание, чтоу вас есть ошибка: switch(a==5) должно быть switch(a).

2 голосов
/ 05 ноября 2019

Поскольку a==5 ложно, поскольку a равно 3, возвращается 0. Именно поэтому case 0: срабатывает.

break; приводит к остановке кода, а без него - кодубудет продолжаться до default:.

2 голосов
/ 05 ноября 2019

a==5 возвращает значение true или false (0 или 1). В этом примере большинство случаев не будут запущены. Изменить switch(a==5) на switch(a)Это означает, что в вашем примере запускается случай 0, потому что a==5 приводит к ложному (0).

...