我有一段非常琐碎的代码,基本上需要从某个数字开始递减计数,并将其用作数组的索引。
auto bigSize = BigArray.size() - 1;
while(bigSize > -1) {
auto thing = arr[bigSize ];
bigSize--;
}
但是,代码似乎从未在循环内命中任何东西。我也尝试过
for
循环:auto bigSize = BigArray.size() - 1;
for(int i = bigSize ; i >= 0 && i < bigSize ; --i) {
auto thing = arr[i];
}
我觉得我做错了什么,但似乎找不到。
最佳答案
while(bigSize > -1) {
auto thing = arr[bigSize ];
bigSize--;
}
这将永远不会停止。
bigSize
是unsigned
,表示它不能包含负值。当bigSize
为0时,您尝试将其递减为std::numeric_limits<type>::max()
。 (下溢,不是负数)因此它将继续循环。更改条件或将
bigSize
显式设置为int
。关于c++ - 而大于负数不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40862775/