Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
switch语句在C中是如何工作的?_C_Switch Statement - Fatal编程技术网

switch语句在C中是如何工作的?

switch语句在C中是如何工作的?,c,switch-statement,C,Switch Statement,谁能解释一下为什么当x=0时,这个代码的输出是4(我想如果x是0,这适用于情况0:和y假设为3,在这种情况下我错了) #include <stdio.h> int main() { int x = 0; int y; switch (x) { case 0: y = 3; case 1: y = 4; break; default: y = 5; br

谁能解释一下为什么当x=0时,这个代码的输出是4(我想如果x是0,这适用于
情况0:
和y假设为3,在这种情况下我错了)

#include <stdio.h>


int main()
{
    int x = 0;
    int y;

    switch (x) {
    case 0:
        y = 3;
    case 1:
        y = 4;
        break;
    default:
        y = 5;
        break;
    }
    printf("%d", y);
    getchar();
    return 0;
}
#包括
int main()
{
int x=0;
int-y;
开关(x){
案例0:
y=3;
案例1:
y=4;
打破
违约:
y=5;
打破
}
printf(“%d”,y);
getchar();
返回0;
}

您在第一个案例陈述中注释掉了您的
break;
陈述

所以写下这个:

(否则,当x为0或1时,y被分配给3,然后分配给4)


switch
语句转到下一个
break;
如果一个
case
语句缺少一个!如果您忘记了所有这些:D则它在
switch
语句的末尾停止,并且所有行都被执行!

case语句被设计为进入行中的下一个case,除非它们将执行从整个开关中拉出的break语句。在本例中,您推荐了“案例0”的break语句,因此执行向下滑动到“案例1”,将y重新分配到4。

因为
break
被注释掉了:

switch (x) {
 case 0:
     y = 3;
     //break;  <---- commented out.
开关(x){
案例0:
y=3;
//break;在
开关(x)
操作之后,执行首先跳到对应的
案例N
语句。然后在该语句之后执行代码,直到a)找到括号(
{}
定义的
开关(x)
边界的末尾或者b)它在开关内找到一个
break
语句,结束该开关


在你的例子中,它经历了
y=3
case1
,再到
y=4
,然后在
中断处结束

嗯,查看switch()的最佳方式是作为“计算的转到”,应该有一个“你是一个C程序员-什么时候?”“上面写着‘由于你编写的switch语句中的一个错误而导致脸朝上’。是的,但我需要知道在没有‘break’的情况下这是如何工作的;@Impalerz如果没有break语句,它会一直持续到下一个语句!
switch (x) {
 case 0:
     y = 3;
     //break;  <---- commented out.