составное условие в течение цикла - PullRequest
1 голос
/ 18 мая 2011

В чем разница между следующими двумя конструкциями? Я получаю разные выходные данные для каждого:

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

        }

И

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

По сути, второй блок кода просто нарушает составное условие в цикле for и помещает его внутрь, используя дополнительный оператор if (я могу упустить что-то очень фундаментальное, и это может быть действительно глупо, но я подумал, что они были одинаковыми).

Пожалуйста, помогите. Похоже, что они на самом деле не одинаковы, и я не могу понять, почему.

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Первое условие завершит цикл, как только любое из подусловий станет ложным (поэтому counter >= numberIfFolds или counter == currentFold). Второй цикл завершится только тогда, когда counter >= numberOfFolds. Однако он проверит, если counter == currentFold, и пропустит выполнение этих операторов, если это так. Однако цикл будет продолжен.

1 голос
/ 18 мая 2011

В первом примере, когда counter равно currentFold, цикл завершается.

Во втором примере цикл будет продолжаться, когда будет выполнено это условие, и вместо этого будет прекращаться, только если counter < numberOfFolds будет ложным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...