Что лучше цикл с условием или без него?

82
16 марта 2021, 21:40

Обычно тело цикла выглядит как-то так:

for (int i = 0; i < n; i++) { /* code */ }

Как новичок, вижу следующий плюс: проще читать/строить/изменять логику тела цикла. Но я для себя обнаружил следующий вариант:

for (int i = n; i--;) { /* code */ }

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

Я слабо знаком с Assembly и тем более теорией компиляторов. Поэтому мне кажется, что лучше использовать второй вариант. Справедливо ли это утверждение, если да, то на каких платформах?

Answer 1

Условие во втором варианте никуда не делось. Будет производится неявное приведение результата i-- к булевому типу путем сравнения с нулем: for (int i = n; 0 != (i--);). Лучше это или хуже - это будет сильно зависеть от содержимого цикла.

READ ALSO
как вывести значение glm::vec2 и glm::mat2

как вывести значение glm::vec2 и glm::mat2

попробовал вывести (что там лежит):

102
Stable_sort, как отсортировать только часть

Stable_sort, как отсортировать только часть

Третий день уже мучаюсь, не могу сообразить, подскажите пожалуйста, как отсортировать вот к примеру такие данные в массиве типа string следующим...

113
Добавить/удалить класс [закрыт]

Добавить/удалить класс [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

165