首頁 > 後端開發 > C++ > 為什麼前導零會改變 C 中的整數值?

為什麼前導零會改變 C 中的整數值?

Susan Sarandon
發布: 2024-11-27 19:40:11
原創
288 人瀏覽過

Why Do Leading Zeros Change Integer Values in C  ?

揭開整數中前導零的謎團

您在Visual Studio 2013 中觀察到的行為反映了在Visual Studio 2013 中表示整數的規則不同的基數,特別是十進制、八進制和十六進制。

整數C 中的文字可以以零開頭來表示各種基數:

  • 十進位(以10 為底): 十進位文字以非零數字開頭,由從0 到的數字組成9.
  • 八進位(以 8 為底): 八進位文字以零開頭,後面跟著0 到 7 之間的數字。
  • 十六進位(以 16 為基數): 十六進位文字以 0x 或 0X 開頭,由 0 到 9 的數字和字母 a 到 f(或 A 到f)組成F).

在你的例如:

  • 07 是八進製文字,表示值 7(以 10 為基數的 7)。
  • 16 是十進位文字,表示值 16。
  • 00016 是一個八進位文字,代表值 14(基數為 16 8).

嘗試分配 08 時編譯器錯誤是因為 8 不是有效的八進位數字。它僅在 7 以內有效。

從 00016 轉換為 14 的原因是八進位文字中的前導零表示該數字以 8 為基數。編譯器透過將每個數字相乘來執行轉換按其對應的 8 次冪,從右到左開始。

對於00016,這表示:
0 * 8^4 0 * 8^3 0 * 8^2 1 * 8^1 6 * 8^0 = 14

因此,您觀察到的行為是編譯器基於以下內容解釋數值的結果它們的前導數字以及C 中不同鹼基的規則。

以上是為什麼前導零會改變 C 中的整數值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板