【问题标题】:QVariant signed/unsigned comparisonsQVariant 有符号/无符号比较
【发布时间】:2016-08-07 01:06:18
【问题描述】:

Qt 框架的 QVariant 类型提供了比较运算符 <, <=, >, >=,但它们在有符号/无符号整数参数不匹配时会出人意料:

QVariant(-1) < QVariant(0u) yields false
QVariant(0u) > QVariant(-1) yields false

有人知道这是一个错误,还是有意为之? 此运算符是否总是在有符号/无符号不匹配时返回 false?

顺便说一句,我使用的是 Qt 5.6

【问题讨论】:

    标签: c++ qt unsigned signed


    【解决方案1】:

    QVariant(-1) &lt; QVariant(0u) 将调用intunsigned int 的内置比较器。基本上,(int(-1) &lt; uint(0)) == false(和here 解释了原因)。

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

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      相关资源
      最近更新 更多