Обычно тело цикла выглядит как-то так:
for (int i = 0; i < n; i++) { /* code */ }
Как новичок, вижу следующий плюс: проще читать/строить/изменять логику тела цикла. Но я для себя обнаружил следующий вариант:
for (int i = n; i--;) { /* code */ }
Где вместо условия мы пишем декремент. И как мне кажется, все плюсы пропадают, но при этом у нас нет условия, остается только шаг и не нужно вычислять булевое значение.
Я слабо знаком с Assembly и тем более теорией компиляторов. Поэтому мне кажется, что лучше использовать второй вариант. Справедливо ли это утверждение, если да, то на каких платформах?
Условие во втором варианте никуда не делось. Будет производится неявное приведение результата i--
к булевому типу путем сравнения с нулем: for (int i = n; 0 != (i--);)
. Лучше это или хуже - это будет сильно зависеть от содержимого цикла.
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Аренда удаленного сервера: цены, провайдеры и условия. Руководство для начинающих
Третий день уже мучаюсь, не могу сообразить, подскажите пожалуйста, как отсортировать вот к примеру такие данные в массиве типа string следующим...
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском