2015-08-21 3 views
0

Стиль один: for (int i=0;i<10000;++i){...}для цикла в C++, любая разница между этими двумя стилями?

Стиль два: for (int i=0;i!=10000;++i){...}

Допустим, что происходит в {} не повлияет на стоимость i, в чем разница между этими двумя стилем? поскольку я проверил с компилятором, все они получают одинаковые результаты.

+7

Первый из них «безопаснее», потому что он будет продолжать работать с шагом более 1 (например, если я перешел от 9999 до 10 002) – Borgleader

+0

Просто подумайте о поведении обоих циклов, если блок будет содержать только 'i = 10001; 'и ничего больше. –

+0

actully Я больше беспокоюсь об эффективности, которая быстрее, когда у нас есть много итеративных времен? – memmove

ответ

4

Учитывая этот конкретный вопрос, нет никакой разницы. Однако, в общем, первый стиль предпочтительнее, потому что он немного безопаснее.

Подумайте, что произойдет, если i станет чем-то вроде 10,001? В первом стиле цикл завершается. Если во втором стиле вы получаете бесконечный цикл.

Если вы придерживаетесь первого стиля, вы также сможете увеличить i на все, что не является фактором 10000, и все же гарантировать прекращение цикла.

+1

Вы имеете в виду «потенциал бесконечный цикл ", потому что как только вы переполняете' int', вы можете снова нажать 10000. И если цикл имеет дело с памятью, вероятно, вы получите ошибку сегментации до достижения переполнения. –

0

Никакой разницы в этом случае. Общепринятый «<» вздох предназначен только для безопасного использования. В случае, если вы работаете с float вместо int, или значение i изменяется внутри цикла, чтобы оно могло пропустить значение, на которое оно отмечено. Как выбор по умолчанию, предпочитайте '<' over '! =', Если '! =' Действительно не требуется, как в сравнении указателей.

+1

Я был бы подозрительным в цикле for, который использовал float в качестве итерационного значения. – Borgleader

+0

Мне тоже, но это возможно. –

0

Если вы также управляете i внутри цикла, есть вероятность, что i может не совпадать 10000 во втором стиле в любой момент времени, и это может стать бесконечным циклом.

Где, как и в первом стиле, даже если значение i будет увеличиваться внутри цикла для любого условия, цикл, безусловно, завершится в некоторый момент времени.

Редактировать: Даже если значение i не будет изменено внутри цикла, и если вы предполагаете, что это всего лишь два способа сделать одно и то же, то в качестве программиста вы должны выбрать первый стиль, поскольку он имеет смысл, читаемость и немного безопаснее по очевидным причинам.

Смежные вопросы