Menyingkap Enigma Sifar Terkemuka dalam Integer
Tingkah laku yang anda perhatikan dalam Visual Studio 2013 ialah gambaran peraturan untuk mewakili integer dalam asas yang berbeza, khususnya perpuluhan, perlapanan dan perenambelasan.
Sebuah literal integer dalam C boleh bermula dengan sifar untuk mewakili pelbagai asas:
Dalam anda contoh:
Ralat pengkompil semasa cuba menetapkan 08 adalah kerana 8 bukan digit perlapanan yang sah. Ia hanya sah sehingga 7.
Sebab penukaran dari 00016 kepada 14 ialah sifar pendahuluan dalam literal perlapanan menunjukkan bahawa nombor itu berada dalam asas 8. Pengkompil melakukan penukaran dengan mendarab setiap digit dengan kuasa sepadan 8, bermula dari kanan ke kiri.
Untuk 00016, ini diterjemahkan kepada:
0 * 8^4 0 * 8^3 0 * 8^2 1 * 8^1 6 * 8^0 = 14
Oleh itu, tingkah laku yang anda perhatikan adalah hasil daripada pengkompil tafsiran nilai berangka berdasarkan digit pendahulunya dan peraturan untuk asas yang berbeza dalam C .
Atas ialah kandungan terperinci Mengapa Sifar Utama Mengubah Nilai Integer dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!