为什么这个switch语句返回ZeroHello World而不是零?
多选题:以下代码的结果是什么为什么这个switch语句返回ZeroHello World而不是零?,c,switch-statement,C,Switch Statement,多选题:以下代码的结果是什么 int x=0; switch(x) { case 1: printf( "One" ); case 0: printf( "Zero" ); case 2: printf( "Hello World" ); } 选项: 一 零 你好,世界 零你好世界 我以为它只会返回零。我已经研究了int值是什么,它改变了输出,但我不能理解这里发生了什么。它是4,ZeroHelloWorld。这是因为你没有使用休息。所发生的是,您的代码正确地到达案例0并执行该代码。
int x=0;
switch(x)
{
case 1: printf( "One" );
case 0: printf( "Zero" );
case 2: printf( "Hello World" );
}
选项:
一
零
你好,世界
零你好世界
我以为它只会返回零。我已经研究了int值是什么,它改变了输出,但我不能理解这里发生了什么。它是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;
}
这实际上是零
如果将x设置为1,则可以更清楚地看到问题。然后,您将打印出OneZeroHello World。在C中,case语句将失效,即case语句将在第一个true条件下开始执行,并在case语句结束或遇到退出时继续执行 您需要像这样显式退出
int x=0;
switch(x)
{
case 1: printf( "One" );
break;
case 0: printf( "Zero" );
break;
case 2: printf( "Hello World" );
}
case标签仅确定代码在开关中的哪个点开始执行。一旦进入开关,除非有中断,否则代码执行将通过并继续执行
因此,在第0种情况下输入开关,并打印零。由于没有中断,因此也将执行下一条语句,您的输出将是ZeroHello World
如果只希望0作为输出,则需要:
int x=0;
switch(x)
{
case 1: printf( "One" );
break; // note the "break"
case 0: printf( "Zero" );
break;
case 2: printf( "Hello World" );
break;
}
中断将导致在printfZero之后停止执行;并将退出开关。只是详细说明前面的答案 在C语言和其他语言中,switch语句中的case用作标签。基于x的值,它将转到正确的case语句,但随后它将遍历该语句下面的其他case语句,除非您有“break”语句 除此之外,最好在末尾使用默认值,这样,如果X的值不是0、1或2,那么行为仍然是可预测的。我想这意味着你的代码应该是
int x=0;
switch(x)
{
case 1: printf( "One" );
break;
case 0: printf( "Zero" );
break;
case 2: printf( "Hello World" );
break;
default: printf("X is out of range, it was %d\n", x);
}
默认情况下不需要break语句,因为它是最后一个语句
查找语法
希望这有帮助,结果是4。
实际上,switchx中的x只是指示执行的起点。你需要休息来休息。
因此,在不中断的情况下,开关将开始执行case x中的语句,直到执行以下所有情况 我以为它只会返回零为什么?假设不能代替学习编程语言的基础知识。而且,没有返回任何内容。请阅读以下内容:谢谢你,我没有意识到没有休息