错误:中断语句不在循环或交换机内

Error: break statement not within loop or switch

本文关键字:循环 交换机 中断 语句 错误      更新时间:2023-10-16

我写了这部分代码,并显示了一系列错误。上述错误是第一个。代码中有什么问题?

void direction(char ch)
{
switch(ch)
case 'w': if(dirn!=3){dirn=1;}
          break;
case 'a': if(dirn!=2){dirn=4;}
          break;
case 's': if(dirn!=1){dirn=3;}
          break;
case 'd': if(dirn!=4){dirn=2;}
          break;

您只有在开关块中只有一个情况时,您才能选择省略开关语句的开口和关闭括号:

void direction(char ch)
{
    switch(ch)
    case 'w': if(dirn!=3){dirn=1;}
}

但是,如果您在您的情况下有多种情况要处理,则必须将它们包装在一对开口和关闭括号中,以为开关语句创建一个代码块,如下所示:

void direction(char ch)
{
switch(ch)
{//opening brace for starting of statement block
    case 'w': if(dirn!=3){dirn=1;}
          break;
    case 'a': if(dirn!=2){dirn=4;}
          break;
    case 's': if(dirn!=1){dirn=3;}
          break;
case 'd': if(dirn!=4){dirn=2;}
          break;
}//closing brace for closing of statement block

因此,您必须要么删除所有情况,但要么添加一对括号以创建语句块。在所有其他情况下,您的代码不会成功编译。

您已经忘记了开关括号:

void direction(char ch)
{
    switch(ch)
    {
        case 'w': if(dirn!=3){dirn=1;}
            break;
        case 'a': if(dirn!=2){dirn=4;}
            break;
        case 's': if(dirn!=1){dirn=3;}
            break;
        case 'd': if(dirn!=4){dirn=2;}
            break;
    }
}
switch(ch)
{
case 'w': if(dirn!=3) dirn=1;
          break;
case 'a': if(dirn!=2) dirn=4;
          break;
case 's': if(dirn!=1) dirn=3;
          break;
case 'd': if(dirn!=4) dirn=2;
          break;
default:
          break;
}

开关之后的语句必须为 compound语句才能包含情况,默认和中断。休息在这里具有特殊的含义,与循环不同。如果仅在开关是其语句的一部分之后仅省略了下一行。