Visual C++ 这里的正确语法是什么

visual c++ what is the correct syntax here?

本文关键字:语法 是什么 C++ 这里 Visual      更新时间:2023-10-16

检查变量值,然后在相同条件下设置变量并检查新设置变量的正确语法是什么?

所以基本上是这样的

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而是跳过语句并忽略该部分。

这样的事情的正确语法是什么?

&& 是具有短路计算的运算符,如果左侧为真,则不执行右侧部分。但是你为什么不简单地写:

if(this->somevar > 0)
{
  this->newvar = this->GetNewVar(this->somevar);
  if (this->newvar > 0)
  {
    ...

这肯定会让事情更清楚...

如果this->somevar计算结果为零,逻辑 AND &&运算符会短路,这意味着在这种情况下不会计算 if 表达式的其余部分

号后面的表达式不是必需的。此外,还缺少一件事,作业周围有括号:

if(this->somevar > 0 && (this->newvar = this->GetNewVar(this->somevar)) > 0)

如果没有括号,您最终可能会this->newvar设置为布尔表达式的值 this->GetNewVar(this->somevar),this->newvar > 0 ,这将被计算为布尔结果(true/false,当转换为this->newvar类型时,可以根据编译器的不同将其转换为 0 或 1 或 -1)。

我认为只有逗号后面的位才被计算为 if 条件。逗号左侧的表达式将被忽略。

int main() {
        if( false, true) { cout << " got to if( false, true ) "; }
        if ( true, false ) { cout << "got to if( true, false ) "; }
}

要回答您的问题,您可以将任何内容放在逗号的左侧并执行任何您喜欢的操作,只要您要计算的表达式是列表中的最后一个表达式即可。

所以如果 ( exp1, exp2, exp3 , exp4 ) dowhatever(); 只有在 exp4 为 true 时才运行。为了提高可读性,您实际上应该在 if 条件之外运行 exp1 到 exp3。