2016-04-15 7 views
5

QtのフレームワークのQVariantタイプは、比較演算子に<, <=, >, >=を提供していますが、彼らは、符号付き/符号なし整数の引数の不一致に予期しない動作します。これはバグであれば/符号なしの比較

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

は誰もが知っている、またはありますこれは意図している? この演算子は、singed/unsigned mismatchで常にfalseを返しますか?

ところで、私はQtの5.6

答えて

3

QVariant(-1) < QVariant(0u)を使用していることを呼び出します内蔵のintunsigned intのコンパレータ。基本的には、(int(-1) < uint(0)) == falsehereという理由が説明されています)。

あなたは異なる動作をする場合は、toInt()または同様の方法で明示的に比較する前に値を変換: QVariant(-1).toInt() < QVariant(0u).toInt() == true

関連する問題