有什么简单的方法可以在if-else链的末尾做一个与else相反的方法吗?

时间:2017-10-18 23:33:02

标签: c++

是否有更简单的通用方法来运行一组使用if-else链中设置的值的代码,只有if-else条件之一为真?我有点想用一条声明来关闭链条,这意味着与其他方面相反......就像“if”,“else”,“好吧其中一条是真的,现在这样做。”

通常一个明显的实现是:

Dataset

我能想出的最好的潜在解决方案是使用可选的z,然后使用if(somethingWasTrue)而不是if(z)

5 个答案:

答案 0 :(得分:4)

根本不需要somethingWasTrue变量。使用易碎块:

do {
  if( x )
    z = 0;
  else if( y )
    z = ResultOfSomething();
  else
    break;

  // code that uses z
} while(false);

答案 1 :(得分:2)

您可以break退出循环以提前终止else,然后继续处理。

do {
    if( x )
        z = 0;
    else if( y )
        z = ResultOfSomething();
    else
        break;

    // code that uses z
} while( 0 );

答案 2 :(得分:2)

我会选择你的"明显的实施"。我认为这是最清晰的。

并不是真的很浪费。即使是-O1优化级别,g ++和clang ++都会消除boolsee here

答案 3 :(得分:0)

你可以试试这个:

bool somethingWasTrue = true;
if( x )
    z = 0;
else if( y )
    z = ResultOfSomething();
else
    // code that uses z

如果前两个“ifs”为假,你想要一个“默认”选择,只需在结尾放一个“else”。

答案 4 :(得分:0)

如何创建子功能:

void foo(int z)
{
    // code that uses z
}

然后

if (x)
    foo(0);
else if( y )
    foo(ResultOfSomething());