我是一名java程序员,是C ++的新手。在下面的代码中,我知道if(condition1)是否为true,返回variable1。但是有没有任何机制可以在第一个if条件求值为true之后处理第二个if?我问这个是因为我看过这样的代码,我在调试时发现了它。
if( condition1 )
{
return variable1;
}
//do some processing here
if( condition2 )
{
return variable2;
}
答案 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之后不会执行代码。