开关语句仅适用于某些情况
for(int i=0; i<3; i++){ switch(i)
case 0:
LAYOUT[i].x=i;
LAYOUT[i].y=i;
case 1:
LAYOUT[i].x=funcx(i);
LAYOUT[i].y=funcy(i);
case 2:
LAYOUT[i].x=2*i;
LAYOUT[i].y=4*i;}
这是我遇到问题的简化代码。我想要这个代码要做的是,当我= 0时,做什么情况下0,当我= 1,做什么情况1等等。开关语句仅适用于某些情况
但是,这里是问题..例如,当i = 1时,它计算正确的.x(情况1)值,但对于.y它计算不同的i,例如0或2.我试图把{ }围绕每个案例中的所有代码,但它没有区别。我也试过我从1到3代替..
ofstream Zone1H; Zone1H.open("TEST.txt");
for(int l=0; l<5; l++)
Zone1H<<LAYOUT[i].x<<" "<<LAYOUT[i].y<<endl;
我的保存部分是否可以成为问题?我从来没有问题,但这部分虽然..
回答:
你错过了break
case
结束时。在所有情况下,只有最后一个才会生效。
for(int i=0; i<3; i++){ switch(i){
case 0:
LAYOUT[i].x=i;
LAYOUT[i].y=i;
break; // <-- add this
case 1:
LAYOUT[i].x=funcx(i);
LAYOUT[i].y=funcy(i);
break; // <-- add this
case 2:
LAYOUT[i].x=2*i;
LAYOUT[i].y=4*i;
break; // <-- add this
}
}
回答:
您需要查看break
声明。当涉及到switch语句时,这是非常重要的。如果没有中断,它会评估其中一个为真,并继续查看其余案例。如果在找到正确的大小写的情况下在每条语句中添加一个中断,它将“断开”开关并继续循环中的下一个数字
回答:
每个案例结束时的中断将使您离开switch语句并返回到for循环的顶部,以便您不会遍历切换条件中的其他情况。
for(int i=0; i<3; i++){ switch(i){
case 0:
LAYOUT[i].x=i;
LAYOUT[i].y=i;
break;
case 1:
LAYOUT[i].x=funcx(i);
LAYOUT[i].y=funcy(i);
break;
case 2:
LAYOUT[i].x=2*i;
LAYOUT[i].y=4*i;
break;
}
}
以上是 开关语句仅适用于某些情况 的全部内容, 来源链接: utcz.com/qa/266046.html