return statement
返回语句
终止当前函数并将指定值返回给调用者函数。
句法
return expression ; | (1) | |
---|---|---|
return ; | (2) | |
说明
1)计算表达式,终止当前函数并将表达式的结果返回给调用者(返回的值成为函数调用表达式的值)。只有在函数返回类型不是时才有效void
。
2)终止当前功能。只有在函数返回类型为void
。时才有效。
如果表达式的类型与函数的返回类型不同,则通过赋值给类型为函数的返回类型的对象来转换其值,除了允许对象表示之间的重叠之外:
struct s { double i; } f(void // function returning struct s
union { struct { int f1; struct s f2; } u1;
struct { struct s f3; int f4; } u2; } g;
struct s f(void)
{
return g.u1.f2;
}
int main(void)
{
// g.u2.f3 = g.u1.f2; // undefined behavior (overlap in assignment)
g.u2.f3 = f( // well-defined
}
如果返回类型是实际浮动类型,则结果可能会以比新类型暗示的更大的范围和精度表示。
到达以外的功能的端部main
是相当于return;
。到达主要功能的结束等同于return 0;
。到达任何其他返回值函数的末尾都是未定义的行为,但前提是函数的结果在表达式中使用。
return
在无返回函数中执行语句是未定义的行为。
关键词
return
.
例
#include <stdio.h>
void fa(int i)
{
if (i == 2)
return;
printf("fa(): %d\n", i
} // implied return;
int fb(int i)
{
if (i > 4)
return 4;
printf("fb(): %d\n", i
return 2;
}
int main(void)
{
fa(2
fa(1
int i = fb(5 // the return value 4 used to initializes i
i = fb(i // the return value 2 used as rhs of assignment
printf("main(): %d\n", i
}
输出:
fa(): 1
fb(): 4
main(): 2