我有一段非常琐碎的代码,基本上需要从某个数字开始递减计数,并将其用作数组的索引。

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--;
}

这将永远不会停止。 bigSizeunsigned,表示它不能包含负值。当bigSize为0时,您尝试将其递减为std::numeric_limits<type>::max()。 (下溢,不是负数)因此它将继续循环。

更改条件或将bigSize显式设置为int

关于c++ - 而大于负数不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40862775/

10-09 13:34