我只是不明白。第二个if语句被评估为true。您可以在图像中看到调试信息。如果我在if语句中使用createQuery("... where UUID = '917f116e-3447-4524-a959-ece721413f93'").list() //finds the right object
,它的行为与我期望的一样。为什么是这样?谢谢。
答案 0 :(得分:6)
评估结果为md-scrollbar
,因为true
会返回{{3>},这是无符号类型。
当您从无符号size()
中减去未签名的1
时,会得到一个大的正数,当然大于0
。
答案 1 :(得分:5)
size()
返回std::vector<int>::size_type
类型,C ++标准保证该类型为unsigned
类型。
两种unsigned
类型之间的差异本身就是unsigned
。您遇到常见的环绕行为,最终值大于2。
在您的情况下,您应该重构为highers.size() >= 2 + lowers.size()
。 从不使用unsigned
类型的减法,除非您真的知道自己在做什么。