多个return语句如何工作?

时间:2012-05-21 08:32:37

标签: c

我的印象是C中的任何函数都只支持一个return语句,直到我提到了多个返回语句的几个音符。我的问题是这些多重返回语句如何工作。任何帮助都是适当的。谢谢!

6 个答案:

答案 0 :(得分:4)

执行的第一个return语句将终止该函数,并将使用其值。

但是,显然可以有多个执行路径 - 它们可以返回不同的值。实际上在非void函数中,每个可能的执行路径都有来返回一些东西。实现这一目标的最简单方法是在函数的最后部分显示return语句。

if(foo)
    return 23;
else
    return 42;

在代码中只有一个return语句some arguments;如果有任何一条适用于您,请考虑阅读该文章。一个很好的例子是总是需要做一些清理的代码。在这种情况下,您只想在完成此操作后返回 - 因此您将为返回值设置一个变量,并使用goto跳转到函数末尾的清理并返回部分,如果你需要提早回来。

答案 1 :(得分:1)

它将遇到的第一个返回语句将停止进一步执行并将控制权返回给调用者函数。如果你想在函数中处理后访问多个值,那么你可以使用struct或arrays这些对象,你可以返回函数,因此你将得到更新的值作为整个struct / array对象

答案 2 :(得分:0)

无论哪个返回首先命中都会导致函数退出并将控制权交还给调用者。

例如:

int foo(int x)
{
    if(x == 0) return 0;
    return 1;
}

在这种情况下,如果x0,则会触发第一个返回,并返回0。如果传递了任何其他数字,则会触发第二个返回并返回1

答案 3 :(得分:0)

你的意思是这样吗?

int function(int input)
{
   if (input == 1) return 1;
   else return 0;
}

好吧,他们作为回复陈述。当然,只有函数中每个代码路径都有一个return语句才有意义。

答案 4 :(得分:0)

如果其他逻辑块中有返回..那么你可以想象在一个函数中有多个返回。

但是类似于:     返回1;     返回2;

没那么多。

答案 5 :(得分:-1)

规则是,对于非void函数,如果不包含return语句,则必须无法到达函数的末尾。

当执行一个fonction时,当你点击一个return语句时,无论你在函数中的哪个位置(在for或if中),你都会退出该函数。因此,如果同一分支中有两个return语句,则只考虑第一个语句。