Rumah > pembangunan bahagian belakang > C++ > Mengapa Tatasusunan Sifar Panjang Bermasalah dalam C/C?

Mengapa Tatasusunan Sifar Panjang Bermasalah dalam C/C?

Mary-Kate Olsen
Lepaskan: 2024-12-26 22:01:14
asal
484 orang telah melayarinya

Why Are Zero-Length Arrays Problematic in C/C  ?

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan