首頁  >  文章  >  後端開發  >  為什麼 C/C 中的「0123」等於 83?

為什麼 C/C 中的「0123」等於 83?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 04:55:03208瀏覽

Why does '0123' equal 83 in C/C  ?

理解C/C 中的數字常數前綴

在C/C 中編寫數字常數時,數字前面使用的前綴具有重要含義這可以改變解釋值。其中一個前綴是“0”,它表示八進制(以 8 為基數)常數。

考慮將數字常數「0123」分配給整數變數的情況。在以 10 為基數(十進位)時,該值確實代表 123。但是,因為它以“0”為前綴,所以它被解釋為八進制常數。

在八進位數字的二進位表示中,每個數字都有特定值:

  • 0: 000
  • 1: 001
  • 2 : 010
  • 3: 011
  • 4 : 100
  • 4 : 100
  • 5: 101
  • 6: 110

7: 111

  • 7: 111
  • 是一個八進位常數,我們可以轉換每個數字與其等價的二進位:
  • 0: 000
  • 1: 001

2: 010

3: 011

連接這些二進位數字,我們得到:000001001011。將其轉換為以 10 為基數(十進位)所得到的值為 83。 因此,當 C/C 中的數字常數以 a 為前綴時'0',它表示一個八進制常數,並且該值被相應地解釋。這種行為在 C 語言和使用 GCC 編譯器的 C 語言中都是一致的,甚至對於浮點常數也是如此。

以上是為什麼 C/C 中的「0123」等於 83?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn