Rumah >pembangunan bahagian belakang >C++ >Adakah Permulaan Separa Struktur dan Tatasusunan Automatik dalam C dan C Dibenarkan dan Ditakrifkan?
Pemulaan Separa Struktur dan Tatasusunan Automatik dalam C dan C
Salah tanggapan berpunca daripada andaian yang salah bahawa permulaan separa bagi struktur dan tatasusunan automatik dibenarkan dalam C. Bertentangan dengan kepercayaan ini, piawaian secara eksplisit mentakrifkan hanya dua kes: lengkap pemulaan atau tiada pemulaan.
Pemulaan Separa
Istilah "pemulaan separa" tidak ditakrifkan dalam piawaian. Ia merujuk kepada pemulaan hanya subset ahli dalam struktur atau tatasusunan.
Permulaan Lengkap
Pemulaan lengkap berlaku apabila semua ahli struktur atau tatasusunan dimulakan secara eksplisit. Contohnya:
struct somestruct { int a; int b; int c; }; somestruct s = {1, 2, 3};
Tiada Permulaan
Apabila tiada pemulaan disediakan, tingkah laku bergantung pada jenis storan pembolehubah:
Separa Permulaan dalam Amalan
Walaupun bukan tingkah laku standard, permulaan separa automatik ahli struktur dan tatasusunan disokong oleh kebanyakan penyusun, termasuk Visual Studio dan gcc/g .
C Standard (C99)
Bahagian 6.7.8.21 Permulaan
Jika lebih sedikit pemula disediakan daripada bilangan elemen atau ahli dalam agregat, elemen selebihnya dimulakan kepada 0.
C Standard (C 03)
Bahagian 8.5.1 Agregat
Jika lebih sedikit pemula hadir, ahli yang tidak dimulakan adalah dimulakan nilai. Permulaan nilai berbeza berdasarkan jenis objek. Sebagai contoh, ahli data bukan statik jenis kelas bukan kesatuan adalah dimulakan nilai, manakala jenis primitif seperti integer dimulakan sifar.
Kesimpulan
Separa pemulaan struktur automatik dan tatasusunan ialah tingkah laku bukan standard yang boleh membawa kepada hasil yang tidak ditentukan jika tidak dikendalikan dengan betul. Untuk memastikan kemudahalihan dan ketepatan, sentiasa pastikan pemulaan lengkap atau tiada pemulaan.
Atas ialah kandungan terperinci Adakah Permulaan Separa Struktur dan Tatasusunan Automatik dalam C dan C Dibenarkan dan Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!