Soalan:
Kod C di bawah ini mempunyai fungsi bukan batal yang tidak mengembalikan nilai:
static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out) { tvec3::Min(a,b,out); out.w = min(a.w,b.w); }
Mengapa ia menyusun tanpa ralat?
Jawapan:
Tingkah laku ini tidak ditentukan mengikut bahagian standard draf C 11 6.6.3 perenggan 2, yang menyatakan bahawa mengalir keluar dari hujung nilai -fungsi mengembalikan menghasilkan tingkah laku yang tidak ditentukan.
Amaran Pengkompil dan Ralat:
Implikasi:
Tingkah laku yang tidak ditentukan boleh membawa kepada hasil yang tidak dapat diramalkan, termasuk ranap program. Adalah disyorkan untuk menggunakan pilihan pengkompil seperti -Wall dan -Wextra untuk mengesan dan membetulkan kejadian tingkah laku yang tidak ditentukan.
Atas ialah kandungan terperinci Mengapa Fungsi Non-Void C Saya Tidak Mengembalikan Nilai Menghasilkan Ralat Pengkompil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!