Я провел некоторое исследование 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 будет равен ноль, потому что происходит что-то вроде переполнения. Но я думаю, что целое число без знака может принимать нулевое значение, не так ли? Теперь, если я заменю его целым числом со знаком, проблем не будет.
Кто-нибудь можете объяснить мне механизм этого обратного цикла с целым числом без знака?
Большое спасибо!