[英]For loop in c++ is not running while using this way: for(int i=-1;i<vector.size();i++) cout << i << endl;
我有一個特殊的用例,我必須將 for 循環中的 i 值初始化為 -1 並根據向量大小編寫退出條件。 但問題是循環根本沒有被執行。 這是代碼。
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> vec = { 1, 2, 3, 4, 5 };
for(int i=-1;i<vec.size();i++) cout << i << " ";
return 0;
}
但我可以這樣做。
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> vec = { 1, 2, 3, 4, 5 };
int size = vec.size();
for(int i=-1;i<size;i++) cout << i << " ";
return 0;
}
誰能解釋這種奇怪的行為,還是我在那里做錯了什么?
第一個片段中的i<size()
比較有符號的int i;
為無符號size_t size;
( size_t
是vector::size_type
的典型 typedef)
當編譯器看到該比較時,它會將int
轉換為無符號值。 通常類似於2^64 - 1
,用於您的第一個值-1
。 該值遠大於 5,因此循環不會運行。
要點:不要將有符號和無符號值與小於或大於進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.