Который является предпочтительным условием в цикле?

Это с этим справится:

foreach ($lijst['palen'] as $valuepalen) {
    foreach ($optellen as $hoogtevalue) {
        echo $valuepalen."x Bekaclip palen (48mm / lengte ".$hoogtevalue".cm \n"; 
    }
}
7
задан yesraaj 27 January 2009 в 06:47
поделиться

12 ответов

Второе. По двум причинам

  1. Меньше, чем (или иногда <=) обычный способ, которым большей частью записи кодера они, и лучше придерживаться конвенции если возможный-! =, вероятно, заставит большинство кодеров посмотреть дважды, чтобы проверить, существует ли что-то нечетное в цикле, тогда как <будет немедленно понят.

  2. ! = зависит от точного условия. Если бы внутренняя часть цикла изменяется во время обслуживания, и я случайно увеличил в цикле затем, Вы закончили бы с бесконечным циклом. Обычно всегда лучше сделать Ваше условие завершения максимально широким - это просто более устойчиво.

2, конечно, причина почему 1.

14
ответ дан 6 December 2019 в 06:51
поделиться

Я сказал бы < поскольку это получает более широкий набор условий. Предположим, что n не был постоянным, но не возвращен из функции, которая в редких случаях возвратилась-1. В таком случае у Вас был бы намного более длинный цикл (пока интервал не повторяется к значению-ve!) с! = версия цикла.

3
ответ дан 6 December 2019 в 06:51
поделиться

Используя condition < намного лучше, потому что это уменьшает возможность переступания через Ваше значение сигнальной метки и попадения в бесконечный цикл.

3
ответ дан 6 December 2019 в 06:51
поделиться

Как дали в вопросе, оба цикла эквивалентны. В реальном коде, однако, это типично, что вещи немного более сложны, и в этом случае, "я <n" условие склонен быть крошечным более безопасным битом. Если, например, я мог бы увеличиться больше чем на один, это могло бы пойти мимо n и затем "я! = n" версия привел бы к вечному циклу.

Это - случай безопасного программирования. Это универсально не принято: некоторые люди предпочитают удостоверяться вещи сбой максимально эффектно так, чтобы ошибки были найдены вначале. Защитный стиль может скрыть небольшие проблемы как этот. Однако, если Вы хотите поймать все ошибки, Вы могли бы также пойти полностью:

int n = 5;
int i = 0;
while (i != n) {
    int old_i = i;
    // the real stuff of the loop here
   ++i;
   assert(i == old_i + 1);
}

(Или еще лучше используйте язык, который поддерживает synxtax для определения пред - и постусловия и инварианты цикла исходно.)

Книга "C Прерывания и Ловушки" Andrew Koenig (см. http://en.wikipedia.org/wiki/C_Traps_and_Pitfalls для начинающих), вероятно, интересна Вам, если Вам нравится размышлять об этом виде вопроса.

2
ответ дан 6 December 2019 в 06:51
поделиться

Я обычно делаю второй способ использовать <. Но думая об использовании! = с тех пор stl итераторы в C++ прокладывает себе путь.

1
ответ дан 6 December 2019 в 06:51
поделиться

Второе. Это будет всегда завершаться в какой-то момент (предполагающий, что Вы не делаете ничего забавного как проигрывание со значением счетчика в цикле).

Я никогда не видел используемое первое, по крайней мере, не таким образом.

1
ответ дан 6 December 2019 в 06:51
поделиться

Я предпочел бы использовать <с тех пор просто смотря на код, можно сказать увеличивающийся цикл, он создает резервную копию того, что Вы используете i ++.

Если Вы используете i ++ и <и по некоторым причинам (другой кодер, опечатка, человеческая ошибка), Ваш код изменяет инкремент на меня - Вы немедленно знали бы, что цикл не оценивается, как с! = это будет работать, так или иначе делая это менее тривиальным для отладки.

1
ответ дан 6 December 2019 в 06:51
поделиться

<n наиболее используется (мое мнение)

1
ответ дан 6 December 2019 в 06:51
поделиться

Я не вижу, что это имеет значение, не там более важные вещи волноваться о?

Я всегда использую последнего, и это - то, что я видел больше всего.

Кто-то, несомненно, подстрелит меня по нему хотя....

0
ответ дан 6 December 2019 в 06:51
поделиться

Я полагаю, что это - лучшая альтернатива, если Вы оптимизируете для скорости:

int n = 5;
for(int i = n;i > 0;i--)
{
//executing 5times
}

Причина этого состоит в том, что сравнение с 0 быстрее.

0
ответ дан 6 December 2019 в 06:51
поделиться

"я <n" лучше. Поскольку, если Вы используете "меня! = n" и в немного заключают Вашу начальную букву в корпус, я являюсь более крупным, чем n, Вы введете бесконечный цикл.

0
ответ дан 6 December 2019 в 06:51
поделиться

Я говорю, что это зависит от типа переменной итератора. Если бы Вы знаете, что это - целое число, я использовал бы второе, потому что можно сказать

Цикл, пока я меньше, чем n

То, которое я думаю, легче считать для большинства программистов, включая меня. Если Вы не знаете тип переменной итератора, необходимо сделать настолько наименьшее количество предположений о ее возможностях насколько возможно. operator< может не быть доступно для i: Если это - какой-либо итератор кроме итератора произвольного доступа, operator< как гарантируют, не будет доступен. В этом случае я использовал бы operator!=.

Я постарался бы не предпочитать опцию < просто, потому что Вы могли случайно "переступить" через значение конца. Я думаю, что аргумент испорчен. Поскольку, если Вы действительно случайно переступали, затем это - ошибка, и она должна быть замечена как можно скорее (Сбой быстро).

0
ответ дан 6 December 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: