Моя первая попытка reverse для цикла, которая делает что-то n раз, была чем-то вроде:
for ( unsigned int i = n-1; i >= 0; i-- ) {
...
}
Этот терпит неудачу, потому что в беззнаковой арифметике i
гарантировано всегда больше или равно нулю, поэтому условие цикла всегда будет истинным. К счастью, gcc-компилятор предупредил меня о "бессмысленном сравнении", прежде чем мне пришлось задаться вопросом, почему цикл выполнялся бесконечно.
Я ищу элегантный способ решения этой проблемы, имея в виду, что:
- Он должен быть обратным циклом.
- Индекс цикла должен быть без знака.
- n - неизменная константа.
- Он не должен основываться на "неясной" кольцевой арифметике целых чисел без знака.
Любые идеи? Спасибо:)