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

    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 🙂


Anmelden zum Antworten