Warum verwandelt ein Präfix Null 0123 in 83 in C/C?
Nov 11, 2024 pm 12:46 PMNumerische Konstanten und die mystische Kraft des Präfixes Null
Haben Sie sich jemals gefragt, was passiert, wenn Sie einer numerischen Konstante in C/C das Präfix voranstellen? eine Null? Im Gegensatz zu den bekannten Dezimalkonstanten (z. B. 123) scheint diese scheinbar harmlose Modifikation ein verborgenes Geheimnis zu bergen.
Um dieses seltsame Verhalten zu veranschaulichen, betrachten Sie das Beispiel in der ursprünglichen Frage: Initialisieren eines Int mit dem Wert 0123 Interessanterweise ist das gedruckte Ergebnis nicht 123, wie man erwarten könnte, sondern eine unerwartete 83. Was passiert unter der Haube, die diese scheinbar dezimale Zahl in umwandelt? etwas anderes?
Die Antwort liegt in der rätselhaften Welt der numerischen Konstanten, in der das Präfix Null eine uralte Kraft in sich trägt. Standardmäßig wird davon ausgegangen, dass numerische Literale in C/C dezimal sind (Basis 10). Wenn Sie ihnen jedoch eine Null voranstellen, verwandeln sie sich auf magische Weise in Oktalkonstanten und signalisieren dem Compiler, sie mit der Basis 8 zu interpretieren.
Im Fall von 0123 wird jede Ziffer gemäß dem Oktalsystem interpretiert, was ergibt folgende Berechnung:
0 = 0
1 = 1
2 = 2
3 = 3
Wenn wir diese Werte in Dreiergruppen kombinieren, erhalten wir:
012 = 0 8^2 1 8 2 = 66
3 = 3
Die Addition dieser beiden Werte ergibt das Endergebnis: 66 3 = 83.
Dies erklärt das unerwartete Verhalten, das bei vorangestellten Nullen beobachtet wird. Es ist ein Beweis für die komplizierten Feinheiten von C/C, wo verborgene Mechanismen überraschende und oft verwirrende Ergebnisse liefern können. Wenn Sie also das nächste Mal auf eine numerische Konstante mit dem Präfix Null stoßen, denken Sie an die oktale Tür, die sie öffnet, sodass Ihre Kompilierungen den weniger zurückgelegten Weg zurücklegen können.
Das obige ist der detaillierte Inhalt vonWarum verwandelt ein Präfix Null 0123 in 83 in C/C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

eindeutiger Gebrauch und Phrasenfreigabe

Was ist das minimale gemeinsame Vielfache des maximalen gemeinsamen Divisors einer C -Sprachfunktion?
