使用If语句处理Bool值

时间:2012-01-13 01:02:41

标签: c++ qt if-statement boolean return

我是一名学生程序员,目前正在为我的公司设计一个使用Qt的GUI,我有一个相当简单的问题,我似乎无法在网上找到答案。似乎有人不得不提前问过它,如果你知道答案在哪里,我很高兴参考。我的问题是;可以使用if语句处理c ++中的布尔数据类型。因此bool值可以是1或0,所以你可以这样做吗

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 am时,我实际上返回了一个该函数将持有的值,或者我是否使用了不正确的关键字返回?一旦验证过去Id喜欢能够使用该功能来指示是否继续其他功能请保持我的批评建设性。作为一名学生,我只对改进感兴趣。

2 个答案:

答案 0 :(得分:13)

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

因此,如果您在程序中的其他位置编写此代码:

bool returnValue = trueOrFalse();

然后returnValue变量将包含一个等于trueOrFalse()函数返回的布尔值。

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


关于第二个问题, 正确使用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...
}

答案 1 :(得分:7)

替换

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

return validate;

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

当你在它时,替换以前的

if (validate == true)

if (validate)