Если у вас есть циклический буфер, представленный в виде массива, и вам нужен индекс для переноса (т. Е. Когда вы достигнете максимально возможного индекса и увеличите его), лучше ли вам:
return (++i == buffer.length) ? 0: i;
или
return ++i % buffer.length;
Есть ли у оператора modulo какие-либо недостатки? Это менее читабельно, чем первое решение?
EDIT:
Конечно, это должен быть ++ i, а не i ++, это изменилось.
РЕДАКТИРОВАТЬ 2:
Одно интересное примечание: я нашел первую строку кода в реализации ArrayBlockingQueue Дуга Ли.