Rumah >pembangunan bahagian belakang >C++ >Mengapa '0123' dicetak sebagai '83' dalam C/C ?

Mengapa '0123' dicetak sebagai '83' dalam C/C ?

DDD
DDDasal
2024-11-14 18:24:02992semak imbas

Why does

Memahami Pemalar Berangka dengan Sifar Utama dalam C/C

Dalam C/C , pemalar berangka boleh diawali dengan '0' di hadapan untuk menunjukkan asas atau sistem nombor mereka. Awalan ini menandakan bahawa pemalar ialah nilai perlapanan (asas 8).

Apabila anda menggunakan '0123' sebagai pemalar integer, pengkompil mentafsirkannya sebagai nilai perlapanan. Dalam sistem nombor perlapanan, '123' mewakili nilai perpuluhan 83 (881 3). Oleh itu, apabila anda mencetak nilai, ia mengeluarkan 83 dan bukannya 123.

Tingkah laku ini konsisten merentas pengkompil C dan C, seperti GCC. Ia juga digunakan pada pemalar titik terapung yang diawali dengan '0', walaupun peraturan penukaran mungkin berbeza sedikit.

Untuk menentukan secara eksplisit asas pemalar berangka, anda boleh menggunakan awalan berikut:

  • '0': Oktal (asas 8)
  • '0x' atau '0X': Perenambelasan (asas 16)
  • Tiada awalan: Perpuluhan (asas 10)

Sebagai contoh, untuk mewakili nilai perpuluhan 123 sebagai pemalar perlapanan, anda akan menggunakan '0123'. Sebaliknya, untuk mewakili nilai perlapanan 83 sebagai pemalar perpuluhan, anda akan menggunakan 83.

Atas ialah kandungan terperinci Mengapa '0123' dicetak sebagai '83' dalam C/C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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