jon*_*s68 5 c++ qt unsigned signed
Qt Framework的QVariant类型提供了比较运算符<, <=, >, >=,但它们在有符号/无符号整数参数不匹配时工作意外:
QVariant(-1) < QVariant(0u) yields false
QVariant(0u) > QVariant(-1) yields false
Run Code Online (Sandbox Code Playgroud)
有人知道这是一个bug,还是这个?这个运算符总是在烧焦/无符号不匹配时返回false吗?
顺便说一句,我使用的是Qt 5.6
QVariant(-1) < QVariant(0u)int将调用和的内置比较器unsigned int。基本上,(int(-1) < uint(0)) == false(这里解释了原因)。
如果您想要不同的行为,请在显式比较之前使用toInt()或类似方法
转换值:QVariant(-1).toInt() < QVariant(0u).toInt() == true