使用If语句处理布尔值

Handling Bool Value With an If Statement

本文关键字:布尔值 处理 语句 If 使用      更新时间:2023-10-16

我是一名学生程序员,目前正在用Qt为我的公司设计GUI,我有一个相当简单的问题,我似乎在网上找不到答案。似乎以前有人问过这个问题,所以如果你知道答案在哪里,我很乐意提供推荐信。我的问题是;c++中的布尔数据类型是否可以使用if语句进行处理。所以布尔值要么是一,要么是零,所以你能做这样的吗

bool trueOrFalse()
{
    myclass temp;
    QString tempstr;
    double candidate;
    bool validate;
    tempstr = ui->tableWidgetInjectionLocations->item(i,9)->text();
    candidate = tempstr.toDouble(&validate);
                if(validate == true)
                {
                    temp.tempProperty = candidate;
                }
                else
                {
                    QMessageBox error;
                    error.setText("Error");
                    error.exec();
                }
    if (validate == true)
       {
       return true;
       }
    else
       {
       return false;
       }
}

我在这里真正想要的是这个bool函数的最后一节。当我使用return时,我是否真的返回了一个该函数将保持的值,或者我是否不恰当地使用了关键字return?一旦验证通过,我希望能够使用该函数来指示是否继续执行另一个函数。请保持我的批评具有建设性。作为一名学生,我只对进步感兴趣。

无论何时调用函数,都会实际返回使用return语句返回的值。

因此,如果你在程序的其他地方写下这段代码:

bool returnValue = trueOrFalse();

则CCD_ 2变量将包含与CCD_。

函数本身并不"保存"值,函数的调用方定义了一个变量,该变量将在函数调用完成后保存值。


至于第二个问题,您正确地使用了return语句,但您可以在trueOrFalse()函数中大大简化代码。取而代之的是:

   if (validate == true)
   {
       return true;
   }
   else
   {
       return false;
   }

你只需要这个:

return validate;

因为validate局部变量已经是bool

这消除了根据布尔常数(true)检查布尔值的冗余,这可以防止奇怪的错误悄悄出现,并使代码更易于阅读和理解。

事实上,在处理布尔值(bool)时,您可以随时使用此通用模式。与其将它们与字面上的falsetrue进行比较,您只需编写:

if (validate)  // test for truth
{
    // do whatever...
}

if (!validate)  // test for falsity
{
    // do whatever...
}

更换

 if (validate == true)
       {
       return true;
       }
    else
       {
       return false;
       }

带有

return validate;

没有理由测试它并返回不同的布尔值。

当你在做的时候,更换以前的

if (validate == true)

带有

if (validate)