int main() {
vector<int> v;
if (0 < v.size() - 1) {
printf("true");
} else {
printf("false");
}
}
打印true表示0 <-1
std::vector::size()
返回一个无符号整数。如果为0,然后减去1,则下溢并变成一个巨大的值(特别是std::numeric_limits<std::vector::size_type>::max()
)。比较工作正常,但减法会产生您未预期的值。
有关无符号下溢(和溢出)的更多信息,请参见:C ++下溢和溢出
您的代码最简单的修复方法可能是if (1 < v.size())
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句