Целые числа без знака в C ++ для циклов

Я провел некоторое исследование Stackoverflow о циклах обратного цикла в C ++, которые используют беззнаковое целое вместо подписанного. понять, почему возникает проблема (см. Обратная итерация без знака int с циклами for ). Почему следующий код приведет к ошибке сегментации?

#include 
#include 
using namespace std;

int main(void)
{
    vector x(10);

    for (unsigned int i = 9; i >= 0; i--)
    {
        cout << "i= " << i << endl;
        x[i] = 1.0;
    }

    cout << "x0= " << x[0] << endl;

    return 0;
}

Я понимаю, что проблема в том, когда индекс i будет равен ноль, потому что происходит что-то вроде переполнения. Но я думаю, что целое число без знака может принимать нулевое значение, не так ли? Теперь, если я заменю его целым числом со знаком, проблем не будет.

Кто-нибудь можете объяснить мне механизм этого обратного цикла с целым числом без знака?

Большое спасибо!

11
задан Community 23 May 2017 в 12:10
поделиться