为什么这个switch语句返回ZeroHello World而不是Zero?

Nik*_*kic 0 c switch-statement

多项选择题:以下代码的结果是什么?

int x=0;
switch(x)
{
  case 1: printf( "One" );
  case 0: printf( "Zero" );
  case 2: printf( "Hello World" );
}
Run Code Online (Sandbox Code Playgroud)

选项:

  1. One
  2. Zero
  3. Hello World
  4. ZeroHello World

我以为它只会回来Zero.我已经玩了什么int值,它改变了输出,但我不能按照这里发生的事情.

Dav*_*ica 6

这是4 , ZeroHelloWorld. 这是因为你没有休息.发生的事情是你的代码(正确)到达案例0并执行该代码.但接下来会发生什么呢?它继续发展(因此是Hello World).为了防止这种情况,您需要使用break语句,如下所示 -

int x=0;

switch(x){
case 1:
    printf("One");
    break;

case 0: 
    printf("Zero");
    break;

case 2:
    printf("Hello World");
    break;
}
Run Code Online (Sandbox Code Playgroud)

这实际上只是说零.

如果将x设置为1,则可以更清楚地看到问题.然后您将打印出来OneZeroHello World.