Datentypen Ganzzahlige Literale

casi91

Bekanntes Mitglied
Hallo Community
ein Kollege von mir hat mir Gestern eine Frage gestellt, die ich nicht wirklich beantworten kann.
Und zwar haben wir in unserem Programmierskript folgendes stehen:

Ganzzahlige Literale
Literale sind konstante Ausdrücke, die einen festen Wert repräsentieren. Jedes Literal hat
einen eindeutigen zugehörigen Datentyp

Literale vom Typ int:
12 -12 0 1234 Dezimaldarstellung
033 Oktaldarstellung
0x1b Hexadezimaldarstellung

Literale vom Typ long:
123l 1234567L -45678L Dezimaldarstellung
07777777 Oktaldarstellung
0xffffffff Hexadezimaldarstellung

Die Frage ist nun, warum ist der Oktalwert: 07777777 ein Literal vom Datentyp long?
Umgerechnet ist dieser Wert: 2097151
Da Integer ja aber die Grenzen: -2147483648...2147483647 hat, würde dieser Wert doch wunderbar auch in ein Integer Literal passen.

Wäre schön wenn mich jemand erleuchten könnte :)
 

Marco13

Top Contributor
Java:
int i = 07777777;
int j = 0xffffffff;
Funktioniert beides. Ich würde sagen, dass das, was dort steht, falsch ist, aber übernehme keine Haftung für Punktabzüge in Klausuren ;)
 
S

SlaterB

Gast
das kann man wohl als Fehler ansehen, je nachdem wie schlimm man einen int-Wert dort aufgelistet betrachtet,
die Hexa-Zahl genauso

ohne L bzw. l hinten dran ist es sowieso immer ein int, wenn zuviele Ziffern, dann meckert der Compiler
Java:
        int a = 2147483647;
        int b = 11111111111;// geht nicht
        int c = 011111111111;
        int d = 0111111111111;// geht nicht
        long e = 0111111111111; // geht nicht
        long f = 0111111111111L;
 

casi91

Bekanntes Mitglied
ganz vergessen hier zurück zu schreiben. Verzeihung.
Hatte auch meinem Prof eine Mail geschrieben und der hat ebenfalls zugegeben, dass dort ein Fehler vorliegt.
Also so wie SlaterB es geschrieben hat, ists richtig :)
 

Ähnliche Java Themen

Neue Themen


Oben