2016-08-03 60 views
6

我正在通過Sololearn學習C++。以下是查找兩個數字中最大的一個代碼。函數查找最大數量

#include <iostream> 
using namespace std; 

int max(int a, int b){ 

    if (a > b) { 
     return a; 
    } 

    return b; 
} 

int main() { 

    cout << max(7, 4) << endl; 
    return 0; 
} 

結果 - 7

但它不應該返回b也因爲有返回b在功能 ????

+1

在C中,一旦你回來,你不能回去......返回a結束max函數的執行 – Gar

+1

指令'return'結束函數的執行:在調用'return'後的任何指令都被忽略。在你的情況下,如果a> b你到達第一個返回並退出該函數而忽略第二個返回。否則,第一個返回不執行,導致第二個返回執行 – wasthishelpful

回答

8

只有一個return語句將在函數內執行。只要代碼遇到第一個return它將立即離開該功能,並且不會執行進一步的代碼。

5

CoryKramer的答案說了這一切。 儘管如此,爲了避免你撞到混亂,我寧願:

#include <iostream> 
using namespace std; 

int max(int a, int b){ 

    if (a > b) { 
     return a; 
    } 
    else { 
     return b; 
    } 
} 

int main() { 

    cout << max(7, 4) << endl; 
    return 0; 
} 

備選地可以使用:

return a > b ? a : b; 

後者線是一個所謂的「條件式」(或「條件運算符「)。如果之前的短語?是真的,它返回之間的部分?和:,否則返回:之後的部分。

這是詳細解釋here

+0

**返回a> b? a:b; **你能解釋這條線嗎? – Athul

+0

我已將它添加到答案中。 –

2

if (a > b)(7> 4)==>條件爲真所以return a執行,並從那裏最大值函數返回而已,它不是達到返回b,這就是爲什麼它不執行返回b。

2

運營商迴歸將

終止當前的功能和表達式的結果返回給調用者

http://en.cppreference.com/w/cpp/language/return

後您傳遞的情況

if (a>b) 

編輯 - >感謝athul 返回將評估a並把它作爲函數的結果。

如果是較小的,那麼B - 你不會滿足這個條件,你會打

return b; 

要理解它,您可以添加:

cout << max(2, 4) << endl; 
cout << max(2, 1) << endl; 

到主要部分。

PS最好是至少使用代碼塊,這是在LearnC++建議進入他們的例子

+1

@grindah **如果(a> b)返回將評估b並將其作爲函數的結果** ---->如果滿足條件返回將評估** a **並把它作爲功能的結果吧?不** ** b ** – Athul

+0

你是對的,我的壞 – grindaah

2

可以在迴歸A> B使用? a:b運營商。