Int mit führenden Nullen - unerwartetes Ergebnis

8

Gegeben das folgende Beispiel:

%Vor%

Die Ausgabe ist:

%Vor%

Warum?

    
Philipp Wendt 24.11.2011, 08:31
quelle

4 Antworten

11

Dies liegt daran, dass Ganzzahlliterale mit einer führenden Null Oktalzahlen (Basis 8) sind:

%Vor%     
Mysticial 24.11.2011, 08:33
quelle
7

Dies wird in Abschnitt 3.10.1 der Java-Sprachspezifikation beschrieben . Grundsätzlich ist ein dezimales Literal entweder nur 0 oder 1-9, gefolgt von einem oder mehreren 0-9 Zeichen.

Ein oktales Literal ist eine 0 gefolgt von einem oder mehreren 0-7 Zeichen.

Also wird 01234 als oktal angesehen.

(Interessanterweise ist "0" ein dezimales Literal, aber "00" ist ein oktales Literal. Ich kann mir keine Situationen vorstellen, in denen das wichtig ist, wohlgemerkt, da die Werte offensichtlich gleich sind.)

    
Jon Skeet 24.11.2011 08:35
quelle
4

Führender Nullpunkt bedeutet eine Oktalzahl (Basis 8). 1234 auf Basis-8 ist 668.

    
MByD 24.11.2011 08:33
quelle
4

Ein numerisches Literal mit einer führenden Null wird als oktal interpretiert, d. h. als Basis 8.

    
bobbymcr 24.11.2011 08:33
quelle

Tags und Links