int main() {
vector<int> v;
if (0 < v.size() - 1) {
printf("true");
} else {
printf("false");
}
}
它打印 true 表示 0
std::vector::size()
返回一个无符号整数。如果它是 0 并且你减去 1,它会下溢并变成一个巨大的值(具体来说std::numeric_limits<std::vector::size_type>::max()
)。比较工作正常,但减法产生了您意想不到的值。
有关无符号下溢(和溢出)的更多信息,请参阅:C++下溢和上溢 https://stackoverflow.com/questions/10011372/c-underflow-and-overflow
对您的代码最简单的修复可能是if (1 < v.size())
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)