Switch语句仅适用于某些情况

0 c++ switch-statement

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;}
Run Code Online (Sandbox Code Playgroud)

这是我遇到问题的简化代码.我想要这个代码要做的是,当i = 0时,在0的情况下做什么,当i = 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;
Run Code Online (Sandbox Code Playgroud)

我的保存部分可以成为问题吗?我从来没有遇到这个部分的问题..

gav*_*inb 5

你错过了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
  }
}
Run Code Online (Sandbox Code Playgroud)