Rumah > pembangunan bahagian belakang > C++ > Mengapa Sifar Utama Mengubah Nilai Integer dalam C?

Mengapa Sifar Utama Mengubah Nilai Integer dalam C?

Susan Sarandon
Lepaskan: 2024-11-27 19:40:11
asal
267 orang telah melayarinya

Why Do Leading Zeros Change Integer Values in C  ?

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:

  • Perpuluhan (asas 10): Literal perpuluhan bermula dengan digit bukan sifar dan terdiri daripada digit daripada 0 hingga 9.
  • Oktal (asas 8): Literal oktal bermula dengan sifar diikuti dengan digit dari 0 hingga 7.
  • Heksadesimal (asas 16): Literal perenambelasan bermula dengan 0x atau 0X dan terdiri daripada digit dari 0 hingga 9 dan huruf a hingga f (atau A hingga F).

Dalam anda contoh:

  • 07 ialah literal perlapanan, yang mewakili nilai 7 (7 dalam asas 10).
  • 16 ialah literal perpuluhan, mewakili nilai 16.
  • 00016 ialah literal perlapanan, yang mewakili nilai 14 (16 dalam asas 8).

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan