Wyl*_*SG. 2 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;
}
}
Run Code Online (Sandbox Code Playgroud)
我真正在寻找的是这个bool函数的最后一部分.当我使用return am时,我实际上返回了一个该函数将持有的值,或者我是否使用了不正确的关键字返回?一旦验证过去Id喜欢能够使用该功能来表明是否继续其他功能请保持我的批评建设性.作为一名学生,我只对改进感兴趣.
Cod*_*ray 13
return
无论何时调用该函数,都会返回使用该语句返回的值.
因此,如果您在程序中的其他位置编写此代码:
bool returnValue = trueOrFalse();
Run Code Online (Sandbox Code Playgroud)
然后returnValue
变量将包含一个等效于trueOrFalse()
函数返回的布尔值.
函数本身不"保持"该值,函数的调用者定义一个变量,该函数将在函数调用完成后保存该值.
关于第二个问题,您正在使用该return
语句,但您可以大大简化trueOrFalse()
函数中的代码.而不是这个:
if (validate == true)
{
return true;
}
else
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
你需要的只是这个:
return validate;
Run Code Online (Sandbox Code Playgroud)
因为validate
局部变量已经是一个bool
!
这消除了针对布尔常量(true
)检查布尔值的冗余,这可以防止奇怪的错误蔓延并使代码更易于阅读和理解.
实际上,只要您使用布尔值(bool
),就可以使用这种通用模式.而不是将它们与文字进行比较,false
或者true
你可以写:
if (validate) // test for truth
{
// do whatever...
}
Run Code Online (Sandbox Code Playgroud)
要么
if (!validate) // test for falsity
{
// do whatever...
}
Run Code Online (Sandbox Code Playgroud)
更换
if (validate == true)
{
return true;
}
else
{
return false;
}
Run Code Online (Sandbox Code Playgroud)
同
return validate;
Run Code Online (Sandbox Code Playgroud)
没有理由测试它并返回不同的布尔值.
当你在它时,替换以前的
if (validate == true)
Run Code Online (Sandbox Code Playgroud)
同
if (validate)
Run Code Online (Sandbox Code Playgroud)