2016-08-03 19 views
6

Tôi đang học C++ thông qua Sololearn. Dưới đây là một mã để tìm số lớn nhất trong hai số.Chức năng tìm số lớn nhất

#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; 
} 

quả - 7

Nhưng không nên nó trở lại b cũng kể từ khi có trở lại b chức năng ????

+1

Trong C, khi bạn quay lại, bạn không thể quay lại ...sự trả về kết thúc việc thực hiện hàm tối đa – Gar

+1

Lệnh 'return' kết thúc việc thực hiện hàm: bất kỳ lệnh nào sau khi một lệnh gọi tới' return' bị bỏ qua. Trong trường hợp của bạn, nếu a> b bạn đạt được lợi tức đầu tiên và bỏ chức năng bỏ qua lần trả lại thứ hai. Nếu không, sự trở lại đầu tiên không được thực hiện dẫn đến việc thực hiện số thứ hai – wasthishelpful

Trả lời

8

Chỉ một câu lệnh return sẽ thực thi trong một hàm. Ngay sau khi mã gặp return đầu tiên, nó sẽ ngay lập tức rời khỏi hàm và không có mã nào khác được thực thi.

5

Câu trả lời của CoryKramer nói lên tất cả. Tuy nhiên, để tránh sự nhầm lẫn bạn tình cờ gặp, tôi sẽ thích:

#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; 
} 

Hoặc bạn có thể sử dụng:

return a > b ? a : b; 

Dòng thứ hai là một cái gọi là 'biểu thức điều kiện' (hoặc 'nhà điều hành có điều kiện '). Nếu cụm từ trước khi? là đúng, nó trả về phần giữa? và:, nó sẽ trả về phần sau:.

Điều này được giải thích chi tiết here.

+0

** trả về a> b? a: b; ** bạn có thể giải thích dòng này không? – Athul

+0

Tôi đã thêm nó vào câu trả lời. –

2

if (a > b) (7> 4) ==>Điều kiện trở nên Đúng nên return a thực thi và tối đa chức năng lợi nhuận từ đó mà thôi, nó không đạt được để trở lại b, đó là lý do tại sao nó không thực hiện trở lại b.

2

điều hành trở lại sẽ

chấm dứt chức năng hiện tại và trả về kết quả của biểu thức để người gọi

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

Sau khi bạn vượt qua tình trạng này

if (a>b) 

chỉnh sửa -> nhờ athul trở về sẽ đánh giá a và đặt nó làm kết quả của hàm.

Nếu a là ít sau đó b - bạn sẽ không đáp ứng điều kiện này và bạn sẽ đạt

return b; 

Để hiểu nó, bạn có thể thêm:

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

thành phần chính.

PS nó là tốt hơn để sử dụng ít nhất CodeBlocks, được khuyến cáo trong LearnC++ để nhập ví dụ họ

+1

@grindah ** Sau khi bạn vượt qua điều kiện nếu (a> b) trả về sẽ đánh giá b và đặt nó là kết quả của hàm ** ----> nếu điều kiện được trả về sẽ đánh giá ** a ** và đặt nó như là kết quả của hàm, đúng không ??? không ** b ** – Athul

+0

Bạn nói đúng, tệ của tôi – grindaah

2

Bạn có thể sử dụng trong trở lại a> b? a: b toán tử.

Các vấn đề liên quan