下面代码为了使当bTest为真时跳出3层循环,须3次判断 bTest ! (每加一层循环就得多一次 bTest 判断!!!)。 请问,不用goto语句,能不能一次判断 bTest 为真后直接跳出两层循环? 若能怎么实现? 如果有其它好方法更好(不用goto语句!)。void main()
{
...
bool bTest;
...
while(ture) //第1层循环
{
...
while(true)//第2层循环
{
...
while(true)//第3层循环
{
...
if(bTest)
break; //如果bTest为真,跳出此内层循环。(第1次判断)
...
}
if(bTest)
break;//如果bTest为真,跳出此外层循环。(第2次判断)
...
}
if(bTest)
break;//如果bTest为真,跳出此外层循环。(第3次判断)
...
}
...
}
{
...
bool bTest;
...
while(ture) //第1层循环
{
...
while(true)//第2层循环
{
...
while(true)//第3层循环
{
...
if(bTest)
break; //如果bTest为真,跳出此内层循环。(第1次判断)
...
}
if(bTest)
break;//如果bTest为真,跳出此外层循环。(第2次判断)
...
}
if(bTest)
break;//如果bTest为真,跳出此外层循环。(第3次判断)
...
}
...
}
{
...
bool bTest = FALSE;
...
while(!bTest) //第1层循环
{
...
while(!bTest)//第2层循环
{
...
while(!bTest)//第3层循环
{
...
...
}
...
}
...
}
...
}
用goto算了
try
{
for(int i=0;i<100;i++)
{
for(int j=0;j<100;j++)
{
for(int k=0;k<100;k++)
{
throw "heeh";
}
}
} }
catch (char* str)
{
AfxMessageBox(str);
}
我认为写程序要懂得变通,这样不用goto更加使程序难懂~~~
同意
当需要跳出循环时,修改变量的值为假
但这种方法有弊端
还是用goto比较好
还不是一样, 汇编出来还是jmp 语句异常也是和goto等价的同意那句: 这个时候还不用goto,就干脆取消这个语句算了
===========================================
同意这种情况只有 goto 可读性好。不滥用 goto 。 不代表不能用看情况
==============================================================
同意,too
C++不支持 多循环直接跳出到最外层。
goto再这种情况下反而提高了可读性和效率,为什么不用?
请问:为何你不想用goto?
如果这种代码都不用goto,那我想你还是放弃做程序员吧,脑筋太死板了!
void main()
{
...
bool bTest;
...
while(ture) //第1层循环
{
...
while(true)//第2层循环
{
...
while(true)//第3层循环
{
...
if(bTest)
{
... //还有其它处理
break; //如果bTest为真,跳出此内层循环。(第1次判断)
}
...
}
if(bTest)
{
... //还有其它处理
break; //如果bTest为真,跳出此内层循环。(第2次判断)
}
...
}
if(bTest)
{
... //还有其它处理
break; //如果bTest为真,跳出此内层循环。(第3次判断)
}
...
}
...
}