Zuweisung an int
-
Hallo!
Ich habe folgende Zuweisung gemacht, und ein Ergebnis erhalten, das ich nicht erwartet habe, und mir auch nicht erklären kann:
int = 0122; -> ergibt 82
Es wird irgendwie umgerechnet, und hat etwas mit der 0 am Anfang zu tun, aber ich komme einfach nicht drauf.
Wäre echt dankbar, wenn mir das jemand erklären könnte.
-
1. Variablenname fehlt
2. wenn du 122 einer Variablen zuweisen willst, warum machst du nicht einfach
int i = 122;was willst du mit der 0 am Anfang bezwecken ?
smo
-
Hallo,
Also es geht mir eigentlich nur darum, zu verstehen, warum da 82 rauskommt, wenn ich diese Zuweisung vollziehe.
-
hmm, könnte mir vorstellen, dass der Compiler 0122 als Oktalzahl interpretiert und dann eine Dezimalzahl rausgibt, aber so sicher bin ich mir nicht...
smo
-
genau, sobald du ne 0 davorhängst wird das als oktalzahl interpretiert
-
Zahlen die mit 0x beginnen werden als hexadecimalzahlen behandelt
Zahlen die mit 0 beginnen werden als Octalzahlen behandelt
Zahlen die mit einer Ziffer beginnen werden als int behandelt.Zahlen die eine Punkt beinhalten werden als float Zahlen interpretiert, diese
dürfen dann auch mit 0 beginnen.Fügt man die Zahl eine L an so wird sie als der jeweilige long Typ interpretiert.
Edit:
is ja gut für Korintenka... Zahlen die mit einer Ziffer ungleich 0 beginnen und nicht mit 'x' weitergehen werden als int behandelt.
-
PAD schrieb:
Zahlen die mit einer Ziffer beginne werden als int behandelt.
Ist 0 nicht auch ne Ziffer?
-
ja, die Aussage stimmt trotzdem. 0xFF und 0112 sind auch Integer