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