2016-04-15 96 views
5

的的QVariant類型的Qt框架提供了比較操作<, <=, >, >=,但他們的工作意外的符號/無符號整數參數不匹配:的QVariant符號/無符號比較

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

有誰知道這是一個錯誤,或者是這是打算? 這個操作符是否總是在有/無符號不匹配時返回false?

順便說一句,我使用Qt 5.6

回答

3

QVariant(-1) < QVariant(0u)將調用內置的intunsigned int比較。基本上,(int(-1) < uint(0)) == false(和here這是解釋爲什麼)。

如果你想不同的行爲,明確轉換值進行比較之前toInt()或類似的方法: QVariant(-1).toInt() < QVariant(0u).toInt() == true