Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 嵌套if拖放到父else_C++ - Fatal编程技术网

C++ 嵌套if拖放到父else

C++ 嵌套if拖放到父else,c++,C++,也许我只是太傻了,但是像这样的事情怎么可能实现呢?我用的是c++: if (Something) { if (AnotherThingDependentOnSomething) { certain stuff } else { <goto parentelse> } } else { other stuff } 除非某事物为真,否则无法对另一事物进行评估。 在运行测试之前,我需要做其他事情。

也许我只是太傻了,但是像这样的事情怎么可能实现呢?我用的是c++:

if (Something)
{ 
    if (AnotherThingDependentOnSomething)
    {
        certain stuff
    }
    else
    {
        <goto parentelse>
    }
}
else
{
    other stuff
}
除非某事物为真,否则无法对另一事物进行评估。 在运行测试之前,我需要做其他事情。
所以我的问题是关于去父母的else。

去掉else语句怎么样

if (Something)
{
     //Do some stuff 
    if (AnotherThingDependentOnSomething)
    {
        certain stuff
    }
}
else
{
    other stuff
}
编辑:

好吧,我想我明白你想做什么了。我的建议是:

void OtherStuff()
{
    //Other stuff
}

void CurrentFunction()
{
    if(Something)
    {
        //Do some stuff
        if(AnotherThingDependentOnSomething)
        {
            //certain stuff
        }
        else
        {
            OtherStuff();
        }
    }
    else
    {
        OtherStuff();
    }
}

把else语句去掉怎么样

if (Something)
{
     //Do some stuff 
    if (AnotherThingDependentOnSomething)
    {
        certain stuff
    }
}
else
{
    other stuff
}
编辑:

好吧,我想我明白你想做什么了。我的建议是:

void OtherStuff()
{
    //Other stuff
}

void CurrentFunction()
{
    if(Something)
    {
        //Do some stuff
        if(AnotherThingDependentOnSomething)
        {
            //certain stuff
        }
        else
        {
            OtherStuff();
        }
    }
    else
    {
        OtherStuff();
    }
}

在这种情况下,最好编写更简单、更容易理解的代码。如果你试着聪明一点的话,保养会更困难,更麻烦

bool another_thing = false;

bool some_thing = Something(); // Side effects were implied?

if (some_thing) {
  // ... code dependent on something, but before another thing
  if (AnotherThingDependentOnSomething) {
    another_thing = true;
    // ...
  }
}

if (!some_thing || another_thing) {
  // ...
}

在这种情况下,最好编写更简单、更容易理解的代码。如果你试着聪明一点的话,保养会更困难,更麻烦

bool another_thing = false;

bool some_thing = Something(); // Side effects were implied?

if (some_thing) {
  // ... code dependent on something, but before another thing
  if (AnotherThingDependentOnSomething) {
    another_thing = true;
    // ...
  }
}

if (!some_thing || another_thing) {
  // ...
}

如果我正确理解您的需求,那么使用一个小小的成功标志可能会使代码更具可读性:

bool complicated_condition_holds = false;

if (Something)
{
  // laborious stuff...

  if (SomethingElse)
  {
    // tedious stuff...

    complicated_condition_holds = true;
  }
}

if (!complicated_condition_holds)
{
  // your original "else" block
}

如果我正确理解您的需求,那么使用一个小小的成功标志可能会使代码更具可读性:

bool complicated_condition_holds = false;

if (Something)
{
  // laborious stuff...

  if (SomethingElse)
  {
    // tedious stuff...

    complicated_condition_holds = true;
  }
}

if (!complicated_condition_holds)
{
  // your original "else" block
}

重构出公共部分,然后从两个位置调用它

if (Something)
{
    // do some stuff before the nested if

    if (AnotherThingDependentOnSomething)
    {
        certain stuff
    }
    else doOtherStuff();
}
else
{
    doOtherStuff();
}

void doOtherStuff(params...?)
{
    other stuff
}

重构出公共部分,然后从两个位置调用它

if (Something)
{
    // do some stuff before the nested if

    if (AnotherThingDependentOnSomething)
    {
        certain stuff
    }
    else doOtherStuff();
}
else
{
    doOtherStuff();
}

void doOtherStuff(params...?)
{
    other stuff
}


如果另一个thingDependentOnSomething是false,则不会对else语句求值,因为它是true@j3frea:您希望它具体执行什么操作?如果textbox中的文本大于某个长度,并且已达到方法的此点,则可能已粘贴该文本,因此我将生成一个可能选项列表,并查看是否存在任何选项。如果其中任何一个失败,那么一定的长度太短或者没有选择,我需要做点什么else@j3frea:我的意思是你想在你的代码中去哪里?我所做的改变符合你的要求吗?@j3frea:我不同意汤姆的更好。一般来说,如果您有重复的代码,最好将其放在某个函数中。如果另一个thingDependentOnSomething是false,则不会计算else语句,因为它是true@j3frea:您希望它具体执行什么操作?如果textbox中的文本大于某个长度,并且已达到方法的此点,它可能已经被粘贴了,所以我生成了一个可能选项的列表,看看是否有任何选项。如果其中任何一个失败,那么一定的长度太短或者没有选择,我需要做点什么else@j3frea:我的意思是你想在你的代码中去哪里?我所做的改变符合你的要求吗?@j3frea:我不同意汤姆的更好。一般来说,如果你有重复的代码,最好把它放在某个函数中。是的,我想这就是我必须要做的。可惜你的解决方案不是有投票权的…@j3frea:投票权不重要。选择最适合你需要的答案。你将对某件事进行两次评估。如果这不是你想要的,那么从一开始就把它拿出来储存。是的,我想这就是我必须要做的。可惜你的解决方案不是有投票权的…@j3frea:投票权不重要。选择最适合你需要的答案。你将对某件事进行两次评估。如果这不是你想要的,那么从一开始就把它拿出来储存。是的,这就是我所说的——我见过的最干净的。我只是希望能有一些其他的解决办法,比如休息或者类似的事情。虽然我会以不同的方式排列我的旗帜。@j3:Nah。。。条件句不是循环,所以不存在这样的父概念。是的,这就是我所说的——我见过的最干净的。我只是希望能有一些其他的解决办法,比如休息或者类似的事情。虽然我会以不同的方式排列我的旗帜。@j3:Nah。。。条件句不是循环,所以不存在这样的父级概念。