Meninggalkan Penyata Pulangan dalam C : Usaha Berisiko
Dalam C , meninggalkan penyata pulangan dalam fungsi bukan batal (kecuali untuk fungsi utama) boleh membawa kepada akibat yang tidak dapat diramalkan. Bertentangan dengan kekeliruan yang dialami oleh pengguna, g secara lalai tidak meneka untuk mengembalikan pembolehubah yang ditakrifkan terakhir.
Piawaian C secara eksplisit menyatakan bahawa mengalir keluar dari hujung fungsi tanpa pernyataan pulangan memanggil tidak ditentukan tingkah laku dalam fungsi mengembalikan nilai. Ini bermakna bahawa pengkompil tidak diwajibkan untuk memulangkan sebarang nilai tertentu dan program mungkin berkelakuan tidak menentu atau malah ranap.
Pertimbangkan contoh yang disediakan:
struct boundTag Box::getBound(int side) { struct boundTag retBoundTag; retBoundTag.box = this; // ... (code omitted) }
Walaupun fungsi ini tidak mempunyai pengembalian. kenyataan, diperhatikan bahawa g menyusunnya tanpa amaran. Ini kerana pengkompil C sering menjana pernyataan pulangan lalai untuk mengendalikan penghujung fungsi bukan batal tanpa pulangan yang jelas. Walau bagaimanapun, amalan ini tidak dijamin dan boleh membawa kepada hasil yang tidak dijangka.
Untuk memastikan tingkah laku yang betul, adalah penting untuk sentiasa memasukkan pernyataan pulangan yang jelas dalam fungsi bukan batal. Jika fungsi itu bertujuan untuk mengembalikan nilai, seperti boundTag, penyataan pulangan harus menetapkan nilai itu kepada jenis pulangan fungsi.
Ia juga disyorkan untuk menyusun kod C dengan pilihan yang lebih ketat, seperti -Wall , yang biasanya akan memberi amaran tentang ketiadaan penyata pemulangan dalam fungsi tidak batal dan isu berpotensi lain.
Atas ialah kandungan terperinci Apa yang Berlaku Apabila Anda Meninggalkan Penyata Pemulangan dalam Fungsi C Tidak Batal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!