Làm thế nào để bạn thoát khỏi một hàm void trong C ++?


158

Làm thế nào bạn có thể thoát sớm khỏi một hàm mà không trả về giá trị nếu đó là hàm void? Tôi có một phương thức void cần không thực thi mã của nó nếu một điều kiện nhất định là đúng. Tôi thực sự không muốn phải thay đổi phương thức để thực sự trả về một giá trị.


9
Mặc dù đây là một câu hỏi thực sự đơn giản, tôi đã nêu lên vì tôi gặp vấn đề tương tự khi tôi viết chương trình C đầu tiên của mình :)
rmeador

11
@itsbunnies: Như đã đề cập ở nơi khác, không có câu hỏi lập trình nào quá đơn giản để được hỏi về SO. Nếu bạn gặp rắc rối với nó, thì cũng có người khác trong quá khứ và người khác trong tương lai cũng vậy.
Bill Lizard

@BilltheLizard: Điều gì về chương trình đầu tiên bao giờ có vấn đề đó? Ai có vấn đề đó trong quá khứ của mình ? ;-)
flarn2006

1
chỉ có câu hỏi này thôi :)
moldovean

Lưu ý rằng bạn luôn có thể viết lại một hàm để luôn trả về ở dưới cùng, đó là một nguyên tắc lập trình có cấu trúc (một điểm vào, một điểm thoát),
Malcolm McLean

Câu trả lời:


195

Sử dụng một tuyên bố trở lại!

return;

hoặc là

if (condition) return;

Bạn không cần (và không thể) chỉ định bất kỳ giá trị nào, nếu phương thức của bạn trả về void.


2
Thậm chí nhiều hơn: bạn phải KHÔNG chỉ định bất kỳ giá trị trả về nào nếu phương thức của bạn trả về void.
Jonathan Leffler

Aha, vì vậy khi chúng tôi viết trở lại; không trả lại bất cứ điều gì có nghĩa là trở về khoảng trống chính nó? void có nghĩa là gì !! Hmm, tôi hiểu rồi
quantum231

@ quantum321 Tôi nghĩ rằng giá trị trả về là không xác định về mặt kỹ thuật, không phải là void nhưng nghĩ về nó là "void" là hữu ích.
Tiến sĩ Person Person II

@ Dr.PersonPersonII bởi 'nếu phương thức của bạn trả về "void"', tôi có nghĩa là khung nhìn hoàn toàn cú pháp của kiểu trả về của phương thức được khai báo là void. Về mặt kỹ thuật, phương pháp không trả lại bất cứ điều gì. khác với trả lại không xác định.
Mehrdad Afshari

2
Trên thực tế bạn cũng có thể viết return void():)
Các cuộc đua Lightness trong Orbit

12

Ý bạn là như thế này?

void foo ( int i ) {
    if ( i < 0 ) return; // do nothing
    // do something
}

10
void foo() {
  /* do some stuff */
  if (!condition) {
    return;
  }
}

Bạn chỉ có thể sử dụng từ khóa return giống như bạn làm trong bất kỳ chức năng nào khác.


-1

Tôi biết câu hỏi đã được trả lời và sử dụng một returntuyên bố thực hiện công việc. Nhưng ngoài ra, bạn cũng có thể bao gồm phần còn lại của hàm trong elsekhối ifđiều kiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.