return 語句
來自 cppreference.com
終止當前函式並將指定值返回給呼叫函式。
目錄 |
[編輯] 語法
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 語句 |