Bagaimana Anda keluar dari fungsi void di C ++?


158

Bagaimana Anda bisa keluar secara prematur dari suatu fungsi tanpa mengembalikan nilai jika itu adalah fungsi batal? Saya memiliki metode batal yang tidak perlu mengeksekusi kodenya jika kondisi tertentu benar. Saya benar-benar tidak mau harus mengubah metode untuk benar-benar mengembalikan nilai.


9
Meskipun demikian, ini adalah pertanyaan yang sangat sederhana, saya terangkat karena saya memiliki masalah yang sama ketika saya menulis program C pertama saya :)
rmeador

11
@itsbunnies: Seperti yang disebutkan di tempat lain, tidak ada pertanyaan pemrograman yang terlalu sederhana untuk ditanyakan pada SO. Jika Anda memiliki masalah dengan itu, ada orang lain di masa lalu dan orang lain di masa depan.
Bill the Lizard

@BilltheLizard: Bagaimana dengan program pertama yang pernah mengalami masalah itu? Siapa yang punya masalah di masa lalunya? ;-)
flarn2006

1
baru saja memiliki pertanyaan ini sendiri :)
moldovean

Perhatikan Anda selalu dapat menulis ulang fungsi untuk selalu kembali di bagian bawah, yang merupakan prinsip pemrograman terstruktur (satu titik masuk, satu titik keluar),
Malcolm McLean

Jawaban:


195

Gunakan pernyataan pengembalian!

return;

atau

if (condition) return;

Anda tidak perlu (dan tidak bisa) menentukan nilai apa pun, jika metode Anda kembali void.


2
Bahkan lebih tepatnya: Anda TIDAK harus menentukan nilai kembali jika metode Anda kembali batal.
Jonathan Leffler

Aha, jadi ketika kita menulis kembali; tidak mengembalikan apa pun berarti mengembalikan kekosongan itu sendiri eh? kekosongan tidak berarti apa-apa !! Hmm saya mengerti sekarang.
quantum231

@ quantum321 Saya pikir nilai balik secara teknis tidak terdefinisi, bukan batal tetapi menganggapnya sebagai "batal" berguna.
Dr. Person Person II

@ Dr.PersonPersonII oleh 'jika metode Anda mengembalikan "void"', maksud saya adalah pandangan sintaksis murni dari tipe pengembalian metode yang dinyatakan sebagai void. Secara teknis, metode ini tidak mengembalikan apa pun. yang berbeda dari pengembalian tidak terdefinisi.
Mehrdad Afshari

2
Sebenarnya Anda juga bisa menulis return void():)
Lightness Races in Orbit

12

Maksudmu seperti ini?

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

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

Anda bisa menggunakan kata kunci kembali seperti yang Anda lakukan pada fungsi lainnya.


-1

Saya tahu pertanyaannya sudah dijawab dan menggunakan returnpernyataan berhasil. Tetapi sebagai alternatif Anda juga dapat memasukkan sisa fungsi dalam elseblok ifkondisi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.