Heim  >  Artikel  >  Backend-Entwicklung  >  Warum ist „0123“ in C/C gleich 83?

Warum ist „0123“ in C/C gleich 83?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-17 04:55:03208Durchsuche

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

Numerische Konstantenpräfixe in C/C verstehen

Beim Schreiben numerischer Konstanten in C/C haben die vor den Zahlen verwendeten Präfixe eine wichtige Bedeutung Dies kann den interpretierten Wert verändern. Ein solches Präfix ist „0“, das eine oktale Konstante (Basis 8) darstellt.

Stellen Sie sich den Fall vor, in dem die numerische Konstante „0123“ einer ganzzahligen Variablen zugewiesen wurde. In der Basis 10 (dezimal) würde dieser Wert tatsächlich 123 darstellen. Da ihm jedoch „0“ vorangestellt ist, wird er als Oktalkonstante interpretiert.

In der binären Darstellung einer Oktalziffer hat jede Ziffer ein bestimmter Wert:

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

Da „0123“ eine Oktalkonstante ist, können wir jede Ziffer in ihr binäres Äquivalent umwandeln:

  • 0: 000
  • 1: 001
  • 2: 010
  • 3: 011

Wenn wir diese Binärziffern verketten, erhalten wir: 000001001011. Die Konvertierung in die Basis 10 (Dezimalzahl) ergibt den Wert 83.

Wenn also eine numerische Konstante in C/ C wird eine „0“ vorangestellt, es bedeutet eine Oktalkonstante und der Wert wird interpretiert entsprechend. Dieses Verhalten ist sowohl in C als auch in C mit dem GCC-Compiler und sogar für Gleitkommakonstanten konsistent.

Das obige ist der detaillierte Inhalt vonWarum ist „0123“ in C/C gleich 83?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn