Как Case 5 выполняется в этом операторе Switch? - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть следующий код (который взят из книги C):

#include<stdio.h>

int main( )
{
  int k=4,j=0;

  switch(k)
  {
  case 3:
    j=300;

  case 4:
    j=400;

  case 5:
    j=500;
  }

  printf("%d",j);
}

Когда я запускаю приведенный выше код, я получаю вывод как 500, но я ожидал, что он будет 400 Может кто-нибудь, почему он напечатан 500, а не 400?

(я новичок в C, и я не мог понять, в чем в этом ошибка!)

Ответы [ 3 ]

5 голосов
/ 25 сентября 2011

Вам нужно выйти из ваших дел, иначе он будет выполняться через другие случаи:

int main( )
{
    int k=4,j=0;
    switch(k)
    {
    case 3:
        j=300;
        break;
    case 4:
        j=400;
        break;
    case 5:
        j=500;
        break;
    }
    printf("%d",j);
}

Так что в вашем случае он выполнил j=400, а затем перешел к case 5: и выполнил j=500

5 голосов
/ 25 сентября 2011

Вам нужно break; в конце блока дела.

#include <stdio.h>
int main()
{
    int k = 4, j = 0;
    switch(k)
    {
        case 3:
            j = 300;
            break;
        case 4:
            j = 400;
            break;
        case 5:
            j=500;
            break;
    }
    printf("%d\n", j);
}
3 голосов
/ 25 сентября 2011

После случая 4 нет оператора break, поэтому выполнение «проваливается» до случая 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...