是否可以在C ++中的return语句后执行代码?

时间:2013-04-04 21:58:31

标签: c++

我是一名java程序员,是C ++的新手。在下面的代码中,我知道if(condition1)是否为true,返回variable1。但是有没有任何机制可以在第一个if条件求值为true之后处理第二个if?我问这个是因为我看过这样的代码,我在调试时发现了它。

if( condition1 )
{
    return variable1;
}

//do some processing here

if( condition2 )
{
    return variable2;
}

6 个答案:

答案 0 :(得分:14)

虽然有一种方法可以在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

答案 1 :(得分:3)

你的函数必须执行1和1 return语句。

因此,要么执行return variable1要么执行if(condition2),要么两者都不执行。

答案 2 :(得分:3)

没有。遇到return后,系统中不会处理任何其他内容。

答案 3 :(得分:1)

不,在达到return语句后,代码永远不会执行。但是,如果condition1为false,则未到达return语句,因此执行正常进行。这正是Java的行为方式。

有一个反对早期return陈述的论据,但我个人觉得它们很有用;试图避免它们可能导致无关紧要的事情,例如临时变量并不能真正对你有好处或大if块 - 由于它们的范围而大多只是令人困惑的块。

答案 4 :(得分:0)

据我记得(或者至少我的老师告诉我),在执行结束之前使用return 并不是一个好主意,除了递归功能

我建议您使用变量来存储您希望作为函数返回的值,并在函数结束时返回它:

if( condition1 )
{
    ans = variable1;
}

/* more code */

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

答案 5 :(得分:0)

只有在被调用时才执行。此时,您将离开该功能/方法。 在您的情况下,如果condition1为false,它将运行您的额外处理,然后继续测试条件2.

现在,在您的情况下,您的代码可能无法编译。 (我知道它不会用Java) 这是因为在这种情况下我们都不会满足任何条件。所以,你应该在if语句之外得到一些回报。

简而言之,在调用return之后不会执行代码。