![](/img/trans.png)
[英]Unsequenced modification warning becomes result unused warning in 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.