簡體   English   中英

不等式比較結果移至C ++ 11時未使用的警告

[英]inequality comparison result unused warning when moving to C++11

我剛剛移到C ++ 11,並在舊代碼中注意到了一些新警告:

ChinaminiC.cpp:70:76: warning: inequality comparison result unused [-Wunused-comparison]
for(std::vector<std::string>::const_iterator cit = _names.begin(); 
    cit != _names.end(), i < _names.size(); 
    cit++, i++)
ChinaminiC.cpp:70:76: note: use '|=' to turn this inequality comparison into an or-assignment

引用的不等式是cit != _names.end()的不等式。 如果這意味着不檢查不等式條件,那就是一個問題(使用i的雙重迭代可以通過與_names大小相同的參數進行迭代)。 給出的建議對我來說似乎是題外話。 在C ++ 11中,一個for循環中兩次迭代的語法是否已更改?

(cit != _names.end()) && (i < _names.size());

,運算符評估左側,並舍棄結果。 那不是你想要的。 您需要將這兩個測試與&& (或|| )結合使用。

不,語法沒有改變。

cit != _names.end(), i < _names.size()

在這里,您使用的是逗號運算符,這意味着將先評估左側然后丟棄,然后再評估右側。 表達式的結果是逗號右邊的結果。

如果要確保兩個條件都成立,則需要使用邏輯AND:

cit != _names.end() && i < _names.size()

暫無
暫無

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

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