2012-05-21 44 views
1

我的印象是C中的任何函數只會支持一個返回語句,直到我遇到了一些提到多個返回語句的筆記。我的問題是這些多重返回語句如何工作。任何幫助appriciated。謝謝!多重返回語句如何工作?

回答

4

時執行將終止功能,其價值將被使用的第一return聲明。

但是,顯然可以有多個執行路徑 - 並且它們可以返回不同的值。其實在一個非void函數中,每個可能的執行路徑都有返回一些東西。實現這個最簡單的方法顯然是在函數的最後有一個return聲明。

if(foo) 
    return 23; 
else 
    return 42; 

some arguments具有隻是在你的代碼的單個return語句;考慮閱讀文章,如果其中任何適用於你。一個很好的例子是總是需要做一些清理的代碼。在這種情況下,您只需要在完成此操作後返回 - 因此,如果您需要返回,您將爲返回值設置一個變量並使用goto跳轉到函數末尾的清理和返回部分早。無論回報先打將導致退出的功能和控制

+3

我相信'else'是多餘的:) –

0

要交回給調用者。

例如:

int foo(int x) 
{ 
    if(x == 0) return 0; 
    return 1; 
} 

在這種情況下,如果x0,那麼第一個回報將受到重創,並0將被退回。如果通過任何其他號碼,則返回第二個返回並返回1

0

您的意思是?

int function(int input) 
{ 
    if (input == 1) return 1; 
    else return 0; 
} 

那麼,他們作爲返回語句。當然,只有在函數中爲每個代碼路徑返回一個聲明纔有意義。

0

如果有其它邏輯塊的回報..然後你可以想見,在函數返回多。

但類似: 回報1; return 2;

沒那麼多。

0

以及它會遇到的第一個返回語句將停止進一步的執行並將控制權返回給調用者函數。如果你想處理後訪問在一個函數的多個值,則可以使用結構或數組這些對象可以返回FRM功能,所以您將獲得更新的值作爲一個整體結構/數組對象

+0

可以請您詳細說明以獲得更多的清晰度。謝謝! – Shash

+0

以及您可以訪問here瞭解更多信息。發送一個返回結構類型對象,那麼你可以得到你在函數中改變的所有值 – Neji

-1

的規則是,如果不包含返回語句,則必須無法達到函數的結尾。

當執行fonction,當你打一個return語句退出功能,無論您身在何處的功能(用於或者如果......裏面)。因此,如果在同一分支中有兩個返回語句,則只會考慮第一個語句。