Heim >Backend-Entwicklung >C++ >Warum ändern führende Nullen ganzzahlige Werte in C?
Enthüllung des Rätsels führender Nullen in Ganzzahlen
Das Verhalten, das Sie in Visual Studio 2013 beobachtet haben, spiegelt die Regeln für die Darstellung von Ganzzahlen wider verschiedene Basen, insbesondere dezimal, oktal und hexadezimal.
Eine ganze Zahl Literal in C kann mit Null beginnen, um verschiedene Basen darzustellen:
In Ihrem Beispiel:
Der Compilerfehler beim Versuch, 08 zuzuweisen, liegt daran, dass 8 keine gültige Oktalziffer ist. Sie ist nur bis 7 gültig.
Der Grund für die Konvertierung von 00016 in 14 ist, dass die führenden Nullen in einem Oktalliteral darauf hinweisen, dass die Zahl zur Basis 8 steht. Der Compiler führt die Konvertierung durch, indem er jede Ziffer multipliziert durch die entsprechende Potenz von 8, beginnend von rechts nach links.
Für 00016 bedeutet dies:
0 * 8^4 0 * 8^3 0 * 8^2 1 * 8^1 6 * 8^0 = 14
Daher ist das von Ihnen beobachtete Verhalten ein Ergebnis der Interpretation der numerischen Werte durch den Compiler zu ihren führenden Ziffern und den Regeln für verschiedene Basen in C .
Das obige ist der detaillierte Inhalt vonWarum ändern führende Nullen ganzzahlige Werte in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!