Это в основном мода, но также сочетание последовательности и недопонимания.
Когда пришли итераторы, и все больше и больше людей начали понимать, что ++it
может быть дешевле, чем it++
, для некоторых итератор сложного, чем указатель it
, они начали привыкать к прекременту везде, чтобы сохранить то, что они считают ненужными копиями в семантике постинкремента (исходное значение должно быть сохранено временно для возврата после увеличения). Затем они сделали бы это и для целых чисел, потому что почему бы и нет?
На самом деле, сохранить нечего. Ваш компилятор прекрасно способен определить, что вычисленный результат здесь никогда не используется, поэтому ++it
и it++
в этом контексте имеют абсолютно идентичную семантику (если только в определении оператора не существует побочного эффекта не-идиоматизма c). ). Это особенно относится к простому целому числу i
.
Конечно, это не повредит, и оно устраняет риск того, что вы пропустили какой-то странный угол, который делает привести к ненужной копии. Это хорошая практика. Просто это произошло не по необходимости.