警惕不同類型的整型變量相比較

當一個無符號整型和一個有符號整型之間比較時,可能會出錯。看下面的代碼:

#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能夠正確打印出不等式左右的結果,但是不等式判斷仍然出錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章