Jar*_*tar 4 c goto control-flow
如何在没有得到的情况下干净利落地做到这一点?
loop:
if(condition1){
something();
} else if (condition2) {
somethingDifferent();
} else {
mostOfTheWork();
goto loop;
}
Run Code Online (Sandbox Code Playgroud)
我也不想使用休息时间.此外,在做其他事情之前,预计会循环几次(adv 40次),因此即使只是为了可读性,最多的工作部分很可能会尽可能高.提前致谢.
编辑:这是在错误的观念下发布的,编译器优化器在休息时效果很差,虽然开始时通常很愚蠢,但我通过实验(性能)证明我自己是不正确的.另一方面,谢谢你的答案; 他们对各种风格的阅读都很有趣.
tpd*_*pdi 10
bool done = false ;
while( !done ) {
if(condition1){
something();
done = true ;
} else if (condition2) {
somethingDifferent();
done = true ;
} else {
mostOfTheWork();
}
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*ohm 10
很明显,如果任何一个条件触发,你将突破循环.
while ((!condition1) && (!condition2)) {
MostOfTheWork();
}
if (condition1) {
something();
} else if (condition2) {
somethingDifferent();
}
Run Code Online (Sandbox Code Playgroud)
因此,循环虽然两个条件都没有被触发,然后看看哪一个让你.
现在,有人会尖叫我评估的条件超出了我的需要.为了他们的利益,修改后的版本:
{
bool t1, t2;
while ((!(t1 = condition1)) && (!(t2 =condition2))) {
MostOfTheWork();
}
if (t1) {
something();
} else if (t2) {
somethingDifferent();
}
}
Run Code Online (Sandbox Code Playgroud)