Heim >Backend-Entwicklung >C++ >Warum ergibt „0123' in C/C den Wert 83?

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

Barbara Streisand
Barbara StreisandOriginal
2024-11-18 10:13:02783Durchsuche

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!

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