我写了这部分代码,并显示了一系列错误。上面提到的错误是第一个。代码有什么问题?
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;
答案 0 :(得分:1)
只有在交换机块中只有一个案例时,您才可以选择省略switch语句的开括号和右括号:
void direction(char ch)
{
switch(ch)
case 'w': if(dirn!=3){dirn=1;}
}
但是,如果你有多个案例需要处理,那么你必须将它们包含在一对开始和结束括号中,以便为switch语句创建一个代码块,如下所示:
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
所以你必须删除所有的情况,但是一个OR添加一对大括号来创建语句块。在所有其他情况下,您的代码无法成功编译。
答案 1 :(得分:0)
switch语句需要大括号块,其中包括默认值的所有标签应为:
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;
}
switch之后的语句必须是复合语句才能包含case,default和break。 Break在这里有一个特殊的含义,与循环不同。如果在switch之后只有下一行省略了括号,那么它就是其语句的一部分。
答案 2 :(得分:0)
你忘记了开关支架:
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;
}
}