![](/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.