好的,我的切换语法有问题,我不知道为什么我无法编译它。
我发布了错误的部分代码,以便您可以帮助我。
如果您需要有关代码的任何信息,请问我。
for (c=0; c<3; c++) // 3 jogadores ( 4 - voce )
{
switch(c)
{
case 0:
char cartas[7];
cartas[0] = jog2_carta1[0];
cartas[1] = jog2_carta1[1];
cartas[2] = jog2_carta2[0];
cartas[3] = jog2_carta2[1];
cartas[4] = jog2_carta3[0];
cartas[5] = jog2_carta3[1];
cartas[6] = '\0';
if (strcmp(retornaMaior(cartas,mesa_jog1[0]), "00") == 1)
{
printf("%s", retornaMaior(cartas,mesa_jog1[0]));
maiorRodada = 2;
// remove carta (na funcao)
}
else
{
// remove menor
}
break;
case 1: // jogador 3
char cartas[7];
cartas[0] = jog3_carta1[0];
cartas[1] = jog3_carta1[1];
cartas[2] = jog3_carta2[0];
cartas[3] = jog3_carta2[1];
cartas[4] = jog3_carta3[0];
cartas[5] = jog3_carta3[1];
cartas[6] = '\0';
if (strcmp(retornaMaior(cartas,mesa_jog2[0]), "00") == 1)
{
if (maiorRodada == 2)
{
printf("%s", retornaMaior(cartas,mesa_jog2[0]));
maiorRodada = 3;
// remove carta (na funcao)
}
}
else
{
// remove menor
}
break;
case 2: // jogador 4
break;
}
}
答案 0 :(得分:3)
您可能希望为每个case
语句打开一个新的上下文,如下所示:
switch(c)
{
case 0:
{
/* Put variable definitons here. */
}
case 1:
{
}
...
default:
{
}
}
答案 1 :(得分:3)
首先,如果您询问语法错误,请始终向我们显示确切的错误消息,并清楚地指出它所引用的行。
问题是带有案例标签的语句的语法是:
case
常量表达式 :
声明
你有:
case 0:
char cartas[7];
cartas[0] = jog2_carta1[0];
// ...
char cartas[7];
是声明,而不是声明。
你可以通过用大括号括起每个case
的主体来解决这个问题,使整个代码块(包括主要声明)成为一个语句:
case 0:
{
char cartas[7];
cartas[0] = jog2_carta1[0];
// ...
break;
}