Gelagat Limpahan untuk Integer Ditandatangani dalam C
Dalam C , limpahan integer yang ditandatangani, seperti dalam C, ialah gelagat yang tidak ditentukan. Ini bermakna bahawa hasil ungkapan yang melimpah tidak ditentukan oleh piawai dan pengkompil bebas untuk mengendalikannya dalam cara yang ditentukan pelaksanaan. Walau bagaimanapun, C 11 memperkenalkan konsep jenis "integer dengan lebar tetap", seperti int8_t, int16_t, int32_t, dan int64_t.
Jenis Integer dengan Lebar Tetap
Jenis ini menjamin bahawa nombor negatif diwakili menggunakan perwakilan pelengkap 2. Ini menunjukkan bahawa operasi aritmetik pada jenis ini mungkin berkelakuan sebagai modulo 2^n, dengan n ialah lebar integer. Walau bagaimanapun, ini tidak berlaku.Gelagat Limpahan untuk Jenis Lebar Tetap
Walaupun untuk jenis lebar tetap, limpahan integer yang ditandatangani kekal sebagai gelagat yang tidak ditentukan. Piawaian C 11 (perenggan 5/4) secara eksplisit menyatakan bahawa jika ungkapan menghasilkan nilai yang tidak ditentukan secara matematik atau tidak boleh diwakili, tingkah laku itu tidak ditentukan.Limpahan Integer Tidak Bertanda
Berbeza dengan limpahan integer yang ditandatangani, limpahan integer yang tidak ditandatangani ditakrifkan secara eksplisit untuk jenis lebar tetap. Menurut perenggan 3.9.1/4 piawai C 11, aritmetik tidak bertanda mematuhi undang-undang modulo 2^n aritmetik. Nota kaki 46 menjelaskan bahawa operasi integer yang tidak ditandatangani tidak melimpah kerana hasilnya dikurangkan modulo nilai maksimum yang boleh diwakili.Kesimpulan
Walaupun menggunakan perwakilan pelengkap 2 untuk jenis lebar tetap, limpahan integer yang ditandatangani kekal sebagai tingkah laku yang tidak ditentukan. Sebaliknya, limpahan integer yang tidak ditandatangani ditakrifkan dengan baik dan mengikut aritmetik modulo. Perbezaan ini menyerlahkan perbezaan asas antara jenis integer yang ditandatangani dan tidak ditandatangani dalam C .Atas ialah kandungan terperinci Apakah Gelagat Limpahan Integer Bertanda dan Tidak Bertanda dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!