QVariant signed/unsigned 比较
QVariant signed/unsigned comparisons
Qt Framework 的 QVariant 类型提供了比较运算符 <, <=, >, >=
,但它们在 signed/unsigned 整数参数不匹配时无法正常工作:
QVariant(-1) < QVariant(0u) yields false
QVariant(0u) > QVariant(-1) yields false
有谁知道这是一个错误,还是有意为之?
此运算符在 singed/unsigned 不匹配时是否总是 return false?
顺便说一下,我正在使用 Qt 5.6
QVariant(-1) < QVariant(0u)
将调用 int
和 unsigned int
的内置比较器。基本上,(int(-1) < uint(0)) == false
(并且 here 解释了原因)。
如果您想要不同的行为,请在使用 toInt() 或类似方法显式比较之前转换值:
QVariant(-1).toInt() < QVariant(0u).toInt() == true
Qt Framework 的 QVariant 类型提供了比较运算符 <, <=, >, >=
,但它们在 signed/unsigned 整数参数不匹配时无法正常工作:
QVariant(-1) < QVariant(0u) yields false
QVariant(0u) > QVariant(-1) yields false
有谁知道这是一个错误,还是有意为之? 此运算符在 singed/unsigned 不匹配时是否总是 return false?
顺便说一下,我正在使用 Qt 5.6
QVariant(-1) < QVariant(0u)
将调用 int
和 unsigned int
的内置比较器。基本上,(int(-1) < uint(0)) == false
(并且 here 解释了原因)。
如果您想要不同的行为,请在使用 toInt() 或类似方法显式比较之前转换值:
QVariant(-1).toInt() < QVariant(0u).toInt() == true