首页 > 解决方案 > for循环中超过2个条件?

问题描述

想知道是否有办法在 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++)

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

标签: c++cfor-loop

解决方案


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

推荐阅读