Heim > Backend-Entwicklung > C++ > Hauptteil

Warum ergibt „0123' in C/C den Wert 83?

Barbara Streisand
Freigeben: 2024-11-18 10:13:02
Original
707 Leute haben es durchsucht

Why does `0123` evaluate to 83 in C/C  ?

Numerische Konstanten mit „0“ in C/C voranstellen

Frage:

Warum Ergibt eine ganzzahlige Konstante mit dem Präfix „0“ in C/C einen anderen Wert als erwartet? Beispielsweise ergibt die Verwendung der Konstante „0123“ den Wert 83 statt 123.

Antwort:

In C/C und anderen Programmiersprachen können numerische Konstanten dies tun müssen unterschiedliche Präfixe vorangestellt werden, um die numerische Basis anzugeben, die sie darstellen. Das Präfix „0“ bezeichnet eine Oktalkonstante (Basis 8).

Wenn der Compiler auf eine numerische Konstante mit dem Präfix „0“ stößt, interpretiert er die darauf folgenden Ziffern als Oktalzahl. Im Fall von „0123“ wird es als (0 8^3) (1 8^2) (2 8^1) (3 8^0) behandelt ergibt 83 in Dezimalzahl.

Dies steht im Einklang mit der C/C-Sprachspezifikation, die besagt, dass eine numerische Konstante, die mit „0“ beginnt, als Oktalzahl behandelt wird. Diese Regel gilt sowohl für Ganzzahl- als auch für Gleitkommakonstanten.

Das Verständnis der Rolle numerischer Präfixe ist entscheidend für die genaue Darstellung und Interpretation numerischer Daten in C/C-Programmen.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage