[英]error on do while loop condition in C++ with condition to continue the loop
[英]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()
返回一個unsigned long
,當與nums.size() - 2
結合使用時會產生下溢,結果是一個非常大的數字,不符合您的代碼邏輯。 由於表達式i < nums.size() - 2
由於下溢而始終計算為true
,因此您將繼續遍歷向量,直到達到大於其大小的索引,這將導致運行時錯誤,更具體地說是vector index out of range
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.