return 语句
来自 cppreference.com
终止当前函数并返回指定的值给调用函数。
内容 |
[编辑] 语法
attr-spec-seq(可选) return expression ; |
(1) | ||||||||
attr-spec-seq(可选) return ; |
(2) | ||||||||
expression | - | 用于初始化函数返回值的表达式 |
attr-spec-seq | - | (C23)可选的 属性 列表,应用于 return 语句 |
[编辑] 解释
1) 评估 expression,终止当前函数并返回 expression 的结果给调用者(返回的值成为函数调用表达式的值)。 仅当函数返回类型不是 void 时才有效。
2) 终止当前函数。 仅当函数返回类型是 void 时才有效。
如果 expression 的类型与函数的返回类型不同,则它的值将被 转换,就像通过赋值给类型为函数返回类型的对象一样,除了允许对象表示之间的重叠。
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 }
如果返回类型是实浮点类型,则结果可能以 大于新类型所暗示的范围和精度 表示。
到达返回 void 的函数的末尾等效于 return;。 如果在表达式中使用函数的结果,则到达任何其他返回值函数的末尾是未定义的行为(允许丢弃此返回值)。 对于 main
,请参见 main
函数。
在 无返回值函数 中执行 |
(自 C11 起) |
[编辑] 关键字
[编辑] 示例
本节内容不完整 原因: 改善 |
运行此代码
#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
[编辑] 参考资料
- C17 标准 (ISO/IEC 9899:2018)
- 6.8.6.4 return 语句 (p: 111-112)
- C11 标准 (ISO/IEC 9899:2011)
- 6.8.6.4 return 语句 (p: 154)
- C99 标准 (ISO/IEC 9899:1999)
- 6.8.6.4 return 语句 (p: 139)
- C89/C90 标准 (ISO/IEC 9899:1990)
- 3.6.6.4 return 语句
[编辑] 另请参阅
C++ 文档 针对
return 语句 |