如何从 C 中 if else 语句中的 switch 中跳出 while 循环?

问题描述 投票:0回答:1

我在学习编程时尝试了有关 if 语句、开关和循环的简单活动,但遇到了这个问题。

while (1) {
    if (/*condition*/) {
           //error
    } else {
           switch (num) {
                 case 1:
                 break;
                 default:
                 //error
           }
    }
}

显然

break;
语句仅终止 switch 块,但不终止循环。

我尝试过做

int loop_break = 1;

while ( 1 && loop_break == 1) {
      if (/*condition*/) {
           //error
      } else {
           switch (num) {
                 case 1:
                 loop_break = 0;
                 break;
             }
      }
}

它确实有效,但它真的有效吗?我不认为这适用于所有问题。我想只使用 goto 但我想先尝试其他方法

c if-statement while-loop switch-statement
1个回答
0
投票

是的,这是正确的方法。您不需要

1 &&
。我还建议使用变量名称来显示它们的作用。如果是
loop_break
,则 
true

会表明您想要打破循环
while (stayInLoop) {
      if (/*condition*/) {
           //error
      } else {
           switch (num) {
                 case 1:
                 stayInLoop = 0;
                 break;
             }
      }
}

如果你有非常复杂的break循环逻辑,你也可以考虑

goto

while (1) {
      if (/*condition*/) {
           //error
      } else {
           switch (num) {
                 case 1:
                 goto outsideTheLoop;
             }
      }
}
outsideTheLoop:
© www.soinside.com 2019 - 2024. All rights reserved.