QVariant签名/未签名比较

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

And*_* R. 3

QVariant(-1) < QVariant(0u)int将调用和的内置比较器unsigned int。基本上,(int(-1) < uint(0)) == false这里解释了原因)。

如果您想要不同的行为,请在显式比较之前使用toInt()或类似方法 转换值:QVariant(-1).toInt() < QVariant(0u).toInt() == true