?
This document uses PHP Chinese website manual Release
終止當(dāng)前函數(shù)并將指定值返回給調(diào)用者函數(shù)。
return expression ; | (1) | |
---|---|---|
return ; | (2) |
1)計(jì)算表達(dá)式,終止當(dāng)前函數(shù)并將表達(dá)式的結(jié)果返回給調(diào)用者(返回的值成為函數(shù)調(diào)用表達(dá)式的值)。只有在函數(shù)返回類型不是時(shí)才有效void
。
2)終止當(dāng)前功能。只有在函數(shù)返回類型為void
。時(shí)才有效。
如果表達(dá)式的類型與函數(shù)的返回類型不同,則通過賦值給類型為函數(shù)的返回類型的對象來轉(zhuǎn)換其值,除了允許對象表示之間的重疊之外:
struct s { double i; } f(void); // function returning struct sunion { 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}
如果返回類型是實(shí)際浮動(dòng)類型,則結(jié)果可能會(huì)以比新類型暗示的更大的范圍和精度表示。
到達(dá)以外的功能的端部main
是相當(dāng)于return;
。到達(dá)主要功能的結(jié)束等同于return 0;
。到達(dá)任何其他返回值函數(shù)的末尾都是未定義的行為,但前提是函數(shù)的結(jié)果在表達(dá)式中使用。
return
在無返回函數(shù)中執(zhí)行語句是未定義的行為。
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(): 1fb(): 4main(): 2