Ответ 1
В случае
for (i=start; i<end; i++)
против
for (i=start; i<end; ++i)
их значения полностью идентичны, потому что значение выражений i++
и ++i
не используется. (Они оцениваются только для побочных эффектов.) Любой компилятор, который создает другой код для двух, является патологически плохим и должен быть заброшен в мусор. Здесь используйте любую форму, которую вы предпочитаете, но i++
является идиоматическим среди программистов C.
В других контекстах используйте форму, которая дает требуемое значение. Если вы хотите получить значение до инкремента, используйте i++
. Это имеет смысл для таких вещей, как:
index = count++;
или
array[count++] = val;
где старое значение count становится индексом нового слота, в который вы собираетесь что-то хранить.
С другой стороны, если вы хотите значение после инкремента, используйте ++i
.
Обратите внимание, что для целых типов все полностью эквивалентны:
-
i += 1
-
++i
-
i++ + 1
а также следующие эквиваленты:
-
(i += 1) - 1
-
i++
-
++i - 1
Для с плавающей запятой и указателей это сложнее.
Что касается любых объективных причин, то совет, который вы нашли, - это просто вздор. Если, с другой стороны, вы найдете ++i
легче рассуждать, тогда не стесняйтесь брать совет, но это будет полностью зависеть от человека и того, к чему вы привыкли.