繁体   English   中英

for循环中超过2个条件?

[英]More than 2 condition in a for loop?

想知道是否有办法在for循环中比较3-4个条件? 有没有办法只使用for循环或我需要在循环中添加一个if语句来控制不打印91 - 96?

我已经尝试添加一个初始条件,围绕它们和它们周围的括号,但似乎无法将它打印到90以上并在97处拾取。

for (int cntr = 65; cntr >= 65 && cntr < 91 || cntr > 96 && cntr < 122; cntr++)

for (int cntr = 65;  cntr < 91 || cntr > 96 && cntr < 122; cntr++)

尝试打印65到122的ASCII字符而不显示90到96.如果可能的话,尝试将其全部放在一个for循环中。

好的,所以修复它是这样的:

for (int cntr = 65; cntr < 123; cntr++)
    {
        if(!(cntr >= 91 && cntr <= 96))
        cout << "#" << cntr << " = ASCII Char: " << char(cntr) << endl;
    }

猜猜这是解决这个问题的最佳方法。 再次感谢你

正如其他人所指出的那样,中心条件是break状况。 如果您想要在一个循环内完成所有操作,则在达到cntr == 91时不希望破坏。

这是一种在一个循环中巧妙地完成它的方法(C ++风格):

for (char cntr = 65; cntr < 123; cntr++)
{
    if ( cntr == 91 ) // skips the parts that you don't want
        cntr = 97;

    std::cout << cntr << std::endl;
}

更一般地说,有时候你可能在一个循环中有多个真正的中断条件,但是最好将它们中的一些/大部分保留在for循环的第一行之外,即。 for ( ... ; ... ; ... ) ,因为它是不必要的,而且通常更难阅读。 你可以在循环开始时写一个中断条件(即第2行):

for ( i = 0; break_condition_1; ++i)
{
    if ( break_condition_2 || break_condition_3 )
        break;

    // loop code
}

上面/下面的答案很好地解释了如何使用多个for循环条件。

但是说你正在做这样的事情(正如Elliott Smith所说):

for ( i = 0; break_condition_1; ++i)
{
    if ( break_condition_2 || break_condition_3 )
        break;

    // loop code
}

为清晰起见,最好简单地执行此操作:

int i = 0;
while (break_condition_1 || break_condition_2 || break_condition_3){
   i++;
}

for循环和while循环之间没有重大区别,除了循环在某些情况下编写更整洁的事实。 在你的情况下,我会建议while循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM