Rumah >pembangunan bahagian belakang >C++ >Mengapakah `size_t` Tidak Ditandatangani dalam C/C : Keperluan Sejarah atau Magnet Pepijat Moden?
Pemerhatian Bjarne Stroustrup bahawa "menggunakan unsigned dan bukannya int untuk mendapatkan satu bit lagi untuk mewakili integer positif hampir tidak pernah menjadi idea yang baik" telah menimbulkan kebimbangan tentang keputusan untuk membuat size_t tidak ditandatangani.
Pada asalnya, size_t dibuat tanpa tanda tangan untuk menampung seni bina dengan penunjuk 16-bit, seperti sistem DOS. Untuk mengelakkan pengehadan saiz rentetan, ptrdiff_t mandat C standard, rakan sejawat size_t yang ditandatangani, menjadi 17 bit dengan berkesan.
Walaupun sebab sejarah ini mungkin masih boleh digunakan dalam sistem terbenam, mereka kurang begitu untuk pengaturcaraan 32-bit dan 64-bit moden. Dalam persekitaran ini, tiada kelebihan praktikal untuk menggunakan jenis yang tidak ditandatangani untuk nombor dan penggunaannya boleh memperkenalkan pepijat yang berpotensi disebabkan oleh peraturan penukaran tersirat C/C (mis., di mana rentetan("Hai").length() < -3) .
Keputusan untuk membuat saiz_t tidak ditandatangani bukanlah satu kesilapan, sebaliknya merupakan pilihan yang praktikal untuk sistem terhad pada zamannya. Walau bagaimanapun, dalam amalan pengaturcaraan moden, secara amnya dinasihatkan untuk meminimumkan penggunaan integer yang tidak ditandatangani dalam antara muka dan untuk nombor, kecuali untuk keadaan tertentu di mana sifat deskriptif kendiri typedef int MyType bermanfaat.
Atas ialah kandungan terperinci Mengapakah `size_t` Tidak Ditandatangani dalam C/C : Keperluan Sejarah atau Magnet Pepijat Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!