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

weixin_38074625 2019-09-12 03:18:02

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; 我的保存部分是否可以成为问题?我从来没有问题,但这部分虽然..








...全文
31 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38113341 2019-09-12
  • 打赏
  • 举报
回复

您需要查看break声明。当涉及到switch语句时,这是非常重要的。如果没有中断,它会评估其中一个为真,并继续查看其余案例。如果在找到正确的大小写的情况下在每条语句中添加一个中断,它将“断开”开关并继续循环中的下一个数字
weixin_38114219 2019-09-12
  • 打赏
  • 举报
回复

每个案例结束时的中断将使您离开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; } }
weixin_38104241 2019-09-12
  • 打赏
  • 举报
回复

你错过了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 } }

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧