Неподписанная int обратная итерация с циклами for - PullRequest
36 голосов
/ 28 марта 2011

Я хочу, чтобы переменная итератора в цикле for переворачивала итерацию до 0 как unsigned int, и я не могу думать о аналогичном сравнении с i > -1, как вы бы сделали, если бы это было signed int.

for (unsigned int i = 10; i <= 10; --i) { ... }

Но это кажется очень неясным, поскольку полагается, что числовое переполнение целого числа без знака будет выше 10.

Может быть, у меня просто нет ясной головы, ноКакой лучший способ сделать это ...

Отказ от ответственности: это простой случай использования, верхний предел 10 тривиален, это может быть что угодно, и i долженбыть unsigned int.

Ответы [ 11 ]

0 голосов
/ 28 марта 2011
for(unsigned i = x ; i != 0 ; i--){ ...

И если вы хотите выполнить тело цикла, когда i == 0 и остановитесь после этого.Просто начните с i = x+1;

Кстати, почему я должен быть без знака?

...