我对 Stackoverflow 进行了一些关于 C++ 中使用无符号整数而不是有符号整数的反向循环的研究。但我仍然不明白为什么会出现问题(请参阅Unsigned int reverse iteration with for loops)。为什么下面的代码会产生分段错误?
#include <vector>
#include <iostream>
using namespace std;
int main(void)
{
vector<double> 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 将等于零,因为有类似溢出的东西。但我认为允许无符号整数取零值,不是吗?现在如果我用有符号整数替换它,绝对没有问题。
有人可以用无符号整数向我解释那个反向循环背后的机制吗?
非常感谢你!