簡體   English   中英

使用這種方式時,C++ 中的 For 循環沒有運行:for(int i=-1;i

[英]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_tvector::size_type的典型 typedef)

當編譯器看到該比較時,它會將int轉換為無符號值。 通常類似於2^64 - 1 ,用於您的第一個值-1 該值遠大於 5,因此循環不會運行。

要點:不要將有符號和無符號值與小於或大於進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM