Rumah >pembangunan bahagian belakang >C++ >Bolehkah C Berfungsi dengan Selamat Meninggalkan Pernyataan `return` jika ia Bukan `void`?

Bolehkah C Berfungsi dengan Selamat Meninggalkan Pernyataan `return` jika ia Bukan `void`?

Patricia Arquette
Patricia Arquetteasal
2024-12-05 09:17:09440semak imbas

Can a C   Function Safely Omit a `return` Statement if it's Not `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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn