Im Bereich der Programmierung können Zahlen mit vorangestellter Null ein faszinierendes Verhalten zeigen. Lassen Sie uns anhand von Beispielen aus Visual Studio 2013 auf die Einzelheiten eingehen.
Bedenken Sie den folgenden Codeausschnitt:
int i = 07; // i == 7 int i = 16; // i == 16 int i = 00016; // i == 14, why? int i = 05016; // i == 2574, wow ) int i = 08; // compile error, compiler expects octal number...
Sonderbehandlung von Zahlen mit Null-Präfix
Der Compiler interpretiert Zahlen mit vorangestellter Null je nach unterschiedlich Kontext:
Ungewöhnliches Verhalten mit 00016 und 05016
Die Zuweisung int i = 00016; wird zu i == 14 aufgelöst, da der Compiler die führenden Nullen als zusätzliche Oktalziffern behandelt, auch wenn dies gemäß dem C-Standard nicht gültig ist.
Ähnlich gilt int i = 05016; ergibt i == 2574, weil der Compiler es wie folgt interpretiert:
Kompilierungsfehler mit 08
Ein ganzzahliges Literal, das mit 0 beginnt, gefolgt von einer anderen Ziffer als 0-7, z. B. 08, löst eine Kompilierung aus Fehler, da der Compiler erwartet, dass es sich um eine Oktalzahl handelt, 8 jedoch keine gültige Oktalzahl ist.
Das obige ist der detaillierte Inhalt vonWarum verhalten sich Zahlen mit Null-Präfix in C unerwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!