开关语句仅适用于某些情况

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;

我的保存部分是否可以成为问题?我从来没有问题,但这部分虽然..

回答:

你错过了breakcase结束时。在所有情况下,只有最后一个才会生效。

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

回到顶部