QVariant有符号/无符号比较

5
Qt框架的QVariant类型提供了比较运算符<, <=, >, >=,但是它们在有符号/无符号整数参数不匹配时会出现意想不到的问题:
QVariant(-1) < QVariant(0u) yields false
QVariant(0u) > QVariant(-1) yields false

有人知道这是一个漏洞还是本意吗?在符号/无符号不匹配时,这些操作符是否总是返回false?

顺便说一下,我正在使用Qt 5.6。

1个回答

3
QVariant(-1) < QVariant(0u)将调用intunsigned int的内置比较器。基本上,(int(-1) < uint(0)) == false(并且这里解释了原因)。
如果您想要不同的行为,请在比较之前使用toInt()或类似方法显式地转换值: QVariant(-1).toInt() < QVariant(0u).toInt() == true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接