Dalam bidang pengaturcaraan, nombor yang diawali dengan sifar boleh mempamerkan tingkah laku yang menarik. Mari kita mendalami secara khusus menggunakan contoh daripada Visual Studio 2013.
Pertimbangkan coretan kod berikut:
int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number...
Layanan Khas Nombor Awalan Sifar
Pengkompil mentafsir nombor awalan sifar secara berbeza bergantung pada konteks:
Gelagat Luar Biasa dengan 00016 dan 05016
Tugasan int i = 00016; menyelesaikan kepada i == 14 kerana pengkompil menganggap sifar pendahuluan sebagai digit perlapanan tambahan, walaupun ini tidak sah mengikut piawai C.
Begitu juga, int i = 05016; menghasilkan i == 2574 kerana pengkompil mentafsirkannya seperti berikut:
Ralat Kompilasi dengan 08
Tersurat integer bermula dengan 0 diikuti dengan digit selain daripada 0-7, seperti 08, mencetuskan kompilasi ralat kerana pengkompil menjangkakan ia sebagai nombor perlapanan, tetapi 8 bukan digit perlapanan yang sah.
Atas ialah kandungan terperinci Mengapa Nombor Awalan Sifar Berkelakuan Tidak Dijangka dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!