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