案例5如何在此Switch语句中执行?

Ant*_*t's 0 c

我有一个以下代码(取自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);
}
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我得到输出500,但我预计它是400,任何人都可以为什么打印500而不是400?

(我是C的新手,我无法弄清楚它中的错误!)

Thi*_*ter 5

您需要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);
}
Run Code Online (Sandbox Code Playgroud)


Sto*_*net 5

你需要打破你的情况,否则它将通过其他情况运行:

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);
}
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下它确实执行j=400然后去case 5:并执行j=500