Rasional untuk Sifat Tidak Bertanda saiz_t
Awas Bjarne Stroustrup terhadap penggunaan integer tidak bertanda untuk mewakili nilai positif telah mencetuskan perdebatan mengenai kepraktisan daripada size_t sebagai jenis data yang tidak ditandatangani.
Secara sejarah, size_t dibina pada seni bina 16-bit di mana mengehadkan rentetan kepada 32 KB adalah tidak munasabah. Untuk menangani perkara ini, piawaian C mewajibkan ptrdiff_t (rakan sejawat saiz_t yang ditandatangani) untuk beroperasi secara berkesan dalam 17 bit, keperluan yang mungkin masih relevan dalam sistem terbenam.
Walau bagaimanapun, untuk 32-bit dan 64-bit moden. platform bit, rasional untuk saiz_t yang tidak ditandatangani menjadi dipersoalkan disebabkan oleh peraturan penukaran tersirat C/C yang malang. Jenis yang tidak ditandatangani menjadi punca ralat apabila digunakan untuk operasi berangka, kerana nilai negatif ditafsirkan sebagai nilai positif yang besar.
Ini telah menyebabkan pakar seperti Scott Meyers mengesyorkan mengelakkan integer tidak ditandatangani dalam antara muka, tanpa mengira jangkaan julat nilai. Hanya menggunakan typedef int MyType boleh menghapuskan isu ini tanpa menjejaskan kebolehbacaan kod.
Ringkasnya, pilihan saiz_t yang tidak ditandatangani telah dibuat dalam konteks kekangan seni bina awal. Walaupun ia mungkin sesuai pada masa itu, ia boleh dikatakan kurang praktikal dalam persekitaran pengaturcaraan moden yang peraturan penukaran tersirat menimbulkan risiko ralat yang ketara.
Atas ialah kandungan terperinci Adakah Unsigned size_t Masih Relevan dalam Pembangunan C/C Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!