在C++中是否可以在return语句之后执行代码?[已关闭]

hgc7kmma  于 2023-01-28  发布在  其他
关注(0)|答案(6)|浏览(315)

很难判断此处所问的问题。此问题模棱两可、模糊不清、不完整、过于宽泛或过于修辞,无法以其当前形式合理地回答。若要获得澄清此问题以便重新打开的帮助,请单击visit the help center
九年前就关门了。
社区在4天前审查了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
我是一个Java程序员,刚接触C++。在下面的代码中,我知道if(condition1)is true variable1被返回。但是是否有任何机制可以在第一个if条件计算为true之后处理第二个if?我问这个问题是因为我看到过类似的代码,并且是在调试时发现的。

if( condition1 )
{
    return variable1;
}

//do some processing here

if( condition2 )
{
    return variable2;
}
z4iuyo4d

z4iuyo4d1#

虽然有办法在return语句之后运行代码,但无法在执行return语句之后更改返回值。
下面是如何让一些代码在return语句之后运行:

struct AfterReturn {
    ~AfterReturn() {
        // This code will run when an AfterReturn object goes out of scope
        cout << "after return" << endl;
    }
};

int foo() {
    AfterReturn guard; // This variable goes out of scope on return
    cout << "returning..." << endl;
    return 5;
    // This is when the destructor of "guard" will be executed
}

int main() {
    cout << foo() << endl;
    return 0;
}

上面的程序prints

returning...
after return
5
l7mqbcuq

l7mqbcuq2#

不可以。一旦遇到return,函数中的任何其他内容都不会被处理。

guykilcj

guykilcj3#

您的函数必须执行1条且正好1条return语句。
因此,要么执行return variable1,要么执行if(condition2),但决不能两者都执行。

ar5n3qh5

ar5n3qh54#

不,代码在return语句到达后不会执行。但是,如果condition1为false,则return语句不会到达,因此执行会正常进行。这也正是Java的行为方式。
早期的return声明有争议,但我个人觉得它们很有帮助;试图避免它们可能会导致多余的麻烦,例如对您没有任何实际帮助的临时变量或大的if-由于其作用域,这些块大多数只是读起来令人困惑。

pbossiut

pbossiut5#

据我所知(或者至少我的老师告诉我),在执行结束之前 * 使用return不是一个好主意,递归函数除外。
我建议你使用一个变量来存储你想作为函数结果返回的值,并在函数结束时返回它:

if( condition1 )
{
    ans = variable1;
}

/* more code */

if( condition2 )
{
    ans = variable2;
}
return ans;
h79rfbju

h79rfbju6#

它只有在被调用时才执行。此时,您将离开该函数/方法。在您的示例中,如果condition 1为false,它将运行额外的处理,然后继续测试条件2。
现在,在你的例子中,你的代码可能不会被编译,(我知道在Java中不会),这是因为有可能两个条件都不满足,在这种情况下,我们会迷路,所以,你可能应该在if语句之外有一些return。
简而言之,在调用return之后不会执行代码。

相关问题