Я не уверен, но я думаю, что вы, вероятно, ошибаетесь из-за ошибки.
Я подозреваю, что проблема в том, как компилятор обрабатывает элемент управления for
. Я мог бы представить, что оптимизатор делает:
for(unsigned int i=a.length()-1; i+1 >= 1; --i) // As written
for (unsigned int i = a.length()-1; i >= 0; --i) // Noting 1 appears twice
for (unsigned int i = a.length()-1; ; --i) // Because i >= 0 at all times
Другое дело, что это происходит, но этого может быть достаточно, чтобы запутать оптимизатор.
Возможно, вам было бы лучше использовать более стандартную формулировку цикла:
for (unsigned i = a.length()-1; i-- > 0; )