【发布时间】:2012-04-20 12:01:16
【问题描述】:
检查变量值然后在相同条件下设置变量同时检查新设置变量 var 的正确语法是什么,全部在一个 if 语句中?
基本上是这样的
if(this->somevar > 0 && this->newvar = this->GetNewVar(this->somevar),this->newvar > 0)
我知道这不是正确的语法,或者至少它对我不起作用,因此我以这个主题为例,所以如果this->somevar 为 null 或 0,我不希望它执行下一个条件&& this->newvar = this->GetNewVar(this->somevar,this->newvar,但跳过该语句并忽略该部分。
这样的正确语法是什么?
【问题讨论】:
-
已经好了。运算符 && 具有短路语义。如果左边的条件为假,它就停在那里,因为完整的表达式永远不会为真。
-
你为什么要做这样的事情?为什么不嵌套
ifs? -
这段代码是在派生模板类中还是什么?如果您能够省略所有
this->,它将更具可读性。 -
当你知道如何在两个语句中做事,但不是在一个语句中,那么这是一个非常强烈的迹象,你应该把它写在两个语句中,因为它在一个语句中变得难以理解。
-
@PlasmaHH:同意。将两个这样的语句合二为一通常没有明显的好处。您最终可能会得到更难以阅读和维护的代码。此外,如果您在条件内赋值,您可能会收到编译器警告。
标签: c++ visual-c++