Mengapa size_t Tidak Ditandatangani?
Soalan:
Dalam bukunya, Bjarne Stroustrup menasihati terhadap penggunaan integer tidak bertanda untuk mendapatkan bit tambahan untuk mewakili integer positif. Walau bagaimanapun, size_t, jenis yang biasa digunakan untuk mewakili saiz tatasusunan dan rentetan, tidak ditandatangani. Adakah ini satu kesilapan dan perlukah penggunaan size_t diminimumkan?
Jawapan:
size_t tidak ditandatangani atas sebab sejarah:
Had Seni Bina:
Pada seni bina lama dengan penunjuk 16-bit, mengehadkan rentetan kepada 32 KB adalah tidak praktikal. Untuk menangani perkara ini, piawaian C memerlukan ptrdiff_t, rakan sejawat yang ditandatangani kepada size_t, mempunyai julat berkesan 17 bit.
Sistem Terbenam:
Dalam pengaturcaraan terbenam tertentu persekitaran, sebab sejarah ini masih berlaku.
Kelemahan Jenis Tidak Ditandatangani:
Walau bagaimanapun, dalam pengaturcaraan 32-bit dan 64-bit moden, jenis yang tidak ditandatangani memberikan kelemahan yang ketara :
Atas ialah kandungan terperinci Mengapakah `size_t` Tidak Ditandatangani Walaupun Kelemahan Diketahui?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!