Sifar Panjang Tatasusunan dalam C/C : Ralat Membingungkan
Walaupun mentakrifkan tatasusunan saiz sifar mungkin kelihatan tidak berbahaya, ia boleh menyebabkan kepada akibat yang tidak dijangka dalam C/C . Menurut piawaian ISO C (9899:2011 6.7.6.2), tatasusunan mesti mempunyai saiz lebih besar daripada sifar.
Sekatan ini dikenakan pada tatasusunan biasa dan tatasusunan panjang berubah-ubah (VLA). Dalam kes VLA, ungkapan yang menentukan saiz tatasusunan mesti mempunyai nilai yang lebih besar daripada atau sama dengan satu. Jika ungkapan ini dinilai kepada sifar atau nombor negatif, gelagat itu tidak ditentukan.
Walaupun keperluan yang jelas ini, sesetengah penyusun, seperti GCC, tidak merungut apabila anda menentukan tatasusunan panjang sifar. Ini mungkin disebabkan oleh sokongan untuk kod warisan yang belum dikemas kini untuk menggunakan sintaks tatasusunan yang lebih baharu dengan kurungan segi empat sama ([]). Walau bagaimanapun, adalah penting untuk memahami bahawa mentakrif tatasusunan sifar panjang ialah ralat.
Mentakrifkan tatasusunan sedemikian tidak menghasilkan struktur data yang sah. Percubaan untuk menggunakan tatasusunan dalam apa jua cara akan membawa kepada tingkah laku yang tidak ditentukan dan kemungkinan ranap sistem. Adalah penting untuk memastikan bahawa kod anda sentiasa mentakrifkan tatasusunan dengan saiz yang sah dan positif.
Atas ialah kandungan terperinci Mengapa Tatasusunan Sifar Panjang Bermasalah dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!