for循环中的复合条件

时间:2011-05-18 17:59:22

标签: loops for-loop

以下两种结构有什么区别?我为每个人获得了不同的输出:

for (int counter = 0; (counter < numberOfFolds) && counter != currentFold; counter++)
        {
            if (instances[counter] < minimum)
            {
                return (currentFoldHasAtleastMinimum && true);
            } 

        }

AND

for (int counter = 0; (counter < numberOfFolds); counter++)
        {
            if (counter != currentFold)
            {
                if (instances[counter] < minimum)
                {
                    return (currentFoldHasAtleastMinimum && true);
                } 
            }
        }

基本上,第二个代码块,只是打破for循环中的复合条件,并使用额外的if语句将其带入内部(我可能在这里缺少一些非常基本的东西,它可能真的很愚蠢,但我认为它们是一样的。)

请帮忙。看起来它们实际上并不相同,我无法弄清楚原因。

2 个答案:

答案 0 :(得分:2)

一旦子条件变为假(第counter >= numberIfFoldscounter == currentFold),第一个条件将结束循环。第二个循环仅在counter >= numberOfFolds时终止。但是,它会检查是否counter == currentFold并跳过执行这些语句。然而,循环将继续。

答案 1 :(得分:1)

在第一个示例中,当counter等于currentFold时,循环终止。

在第二个示例中,循环将在满足该条件时继续,而只会在counter < numberOfFolds为假时终止。