for循环中是否有2个以上的条件?

时间:2019-02-09 07:31:17

标签: c++ c 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。 试图尽可能地将其全部整合到一个循环中。

3 个答案:

答案 0 :(得分:1)

好,这样修复它:

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

猜猜这是目前解决此问题的最佳方法。 再次谢谢你

答案 1 :(得分:0)

正如其他人指出的那样,中心条件是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
}

答案 2 :(得分:0)

上面/下面的答案很好地说明了如何处理多个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循环之间没有主要区别,除了for循环在某些情况下更易于编写的事实。对于您的情况,我建议使用while循环。