Rumah >pembangunan bahagian belakang >C++ >Bolehkah C Berfungsi dengan Selamat Meninggalkan Pernyataan `return` jika ia Bukan `void`?
Adakah Meninggalkan 'Return' dalam Fungsi Non-kosong Boleh Diterima?
Apabila fungsi tidak mengembalikan nilai tetapi mempunyai pulangan tidak batal jenis, pengkompil dijangka akan mengeluarkan ralat. Walau bagaimanapun, dalam kes tertentu, pengkompil boleh membenarkan kod tersebut berlalu tanpa menimbulkan ralat.
Contoh
Pertimbangkan kod berikut:
int func1() { return; // ERROR: no return value } int func2() { // Does not return anything }
Walaupun func1 menjana ralat disebabkan kenyataan pulangan yang hilang, func2 tidak. Ini mungkin kelihatan tidak konsisten.
Sebab Dasar
Dalam C , membenarkan fungsi tidak kembali dengan jenis pulangan bukan batal mempunyai gelagat yang tidak ditentukan. Walau bagaimanapun, pengkompil sering mengeluarkan amaran dan bukannya ralat untuk mengekalkan keserasian dengan kod warisan.
Piawaian C sengaja mengelak mewajibkan ralat masa kompilasi dalam situasi ini kerana menentukan sama ada fungsi tamat dengan sebenar-benarnya tanpa nilai pulangan adalah mencabar.
Pertimbangkan contoh ini:
int func3() { // ... if (condition) { // Does not return } return 0; // Reached only if condition is false }
Dalam ini senario, pengkompil tidak dapat mengetahui sama ada kod itu akan dijalankan pada penghujung fungsi atau keluar melalui pengecualian. Jika ralat telah dikuatkuasakan untuk semua kes tanpa nilai pulangan, program mungkin ditolak walaupun ia sah.
Kesimpulan
Membenarkan fungsi tidak kembali dengan bukan- jenis pengembalian void ialah sumber potensi tingkah laku yang tidak ditentukan. Walaupun penyusun mungkin mengeluarkan amaran, mereka sering memilih tingkah laku permisif untuk memastikan keserasian. Walau bagaimanapun, adalah amat disyorkan untuk sentiasa menyertakan pernyataan pulangan yang sesuai untuk mengekalkan kejelasan kod dan mengelakkan masalah yang mungkin timbul.
Atas ialah kandungan terperinci Bolehkah C Berfungsi dengan Selamat Meninggalkan Pernyataan `return` jika ia Bukan `void`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!