return 语句
来自 cppreference.cn
终止当前函数并将指定值返回给调用函数。
目录 |
[编辑] 语法
attr-spec-seq(可选) return expression ; |
(1) | ||||||||
attr-spec-seq(可选) return ; |
(2) | ||||||||
表达式 | - | 用于初始化函数返回值的表达式 |
属性说明序列 | - | (C23 起)可选的属性列表,应用于 return 语句 |
[编辑] 解释
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 }
如果返回类型是实浮点类型,则结果可能以比新类型所隐含的更大范围和精度表示。
到达返回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 语句 |