C++:while 循环条件中的运行时错误
C++: Runtime error in while loop condition
nums 是一个向量,我有一个代码行
while(i < nums.size()-2 && nums[i] == nums[i+1]) i++;
它会给我一个运行时错误,如果我 运行 nums.size() 为 1 时的代码。
但是,如果我将此行更改为:
while(i-2 < nums.size() && nums[i] == nums[i+1]) i++;
构建成功。
我不知道,执行这两行代码有什么不同,为什么构建的行为不同?
有人知道吗?提前谢谢你。
std::vector<>.size()
returns 一个 unsigned long
与 nums.size() - 2
结合使用时会产生下溢,结果是一些非常大的数字,不符合您的代码逻辑.由于表达式 i < nums.size() - 2
由于下溢而始终计算为 true
,因此您将继续遍历向量,直到达到大于其大小的索引,这将导致运行时错误,更具体地说 vector index out of range
.
nums 是一个向量,我有一个代码行
while(i < nums.size()-2 && nums[i] == nums[i+1]) i++;
它会给我一个运行时错误,如果我 运行 nums.size() 为 1 时的代码。 但是,如果我将此行更改为:
while(i-2 < nums.size() && nums[i] == nums[i+1]) i++;
构建成功。
我不知道,执行这两行代码有什么不同,为什么构建的行为不同?
有人知道吗?提前谢谢你。
std::vector<>.size()
returns 一个 unsigned long
与 nums.size() - 2
结合使用时会产生下溢,结果是一些非常大的数字,不符合您的代码逻辑.由于表达式 i < nums.size() - 2
由于下溢而始终计算为 true
,因此您将继续遍历向量,直到达到大于其大小的索引,这将导致运行时错误,更具体地说 vector index out of range
.