當一個無符號整型和一個有符號整型之間比較時,可能會出錯。看下面的代碼:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_BtnCompare_clicked()
{
quint16 uiLeft = ui->spinBox->value();
qint16 iRight = ui->spinBox_2->value();
qDebug() << uiLeft;
qDebug()<<(iRight - 1);
if(uiLeft < iRight - 1)//注意這裏,不同類型間比較!!!!!!
ui->label->setText("<");
else if(uiLeft > iRight)
ui->label->setText(">");
else
ui->label->setText("=");
}
運行效果:
可見,儘管qDebug能夠正確打印出不等式左右的結果,但是不等式判斷仍然出錯。