Casting

Forwared from „Casting“

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Wenn man in BASCOM-AVR Operationen durchführen, müssen alle Variablen vom gleichen Datentyp sein.
    Ein Cast beschreibt die Wandlung eines Datentypen in einen differenten Datentyp.
    long = long1 * long2 ' als Beispiel
    Der zugewiesene Variablen Datentyp bestimmt, welche Art von Berechnung durchgeführt wird.
    Wenn sie z.B. LONG Typen zuweisen, wird eine Berechnung für LONG Datentypen ausgeführt.
    Wenn sie versuchen den Inhalt einer LONG Variable einem Byte zuzuweisen, wird das LSB (niederwerigste Byte) dem Byte zugewiesen.
    Byte = LONG
    Wenn der LONG einen Wert von 256 enthält, passt dies nicht in ein Byte. Das Ergebnis ist: 256 AND 255 = 0

    Binärdarstellung der Maskierung:

    Source Code

    1. LONG=256 0000 0000 0000 0000 0000 0001 0000 0000
    2. AND 255 0000 0000 0000 0000 0000 0000 1111 1111
    3. Ergebnis 0000 0000 <-- BYTE

    Hinweis: 256 AND 255 nennt man Maskieren. 255 ist in binärer Schreibweise 11111111, also 8 BIT auf Wert 1 gesetzt. Im Wert 256 ist keines der unteren 8 BIT auf 1 gesetzt, weshalb bei einem "logischen und" (AND) von 256 und 255 der Wert 0 als Ergebnis steht!
    Es steht ihnen frei, unterschiedliche Datentypen zu verwenden. Das richtige Ergebnis ist aber nur garantiert, wenn sie gleiche Datentypen verwenden oder das Ergebnis in den Ergebnis Datentyp passt.
    Wenn sie Strings verwenden, gelten die gleichen Regeln bis auf eine Ausnahme:

    BASCOM Source Code

    1. Dim b as Byte
    2. b = 123 ' nichts besonderes, Wert wird einem byte Typ zugewiesen
    3. b = "A" ' ASCII von "A" = 65 --> b = 65
    4. Wird dem Datentyp BYTE eine Stringkonstante in der Form "A" zugewiesen, so wird der ASCII Wert des Zeichen in das Byte übertragen.
    5. Dies funktioniert auch bei logischen Vergleichen:
    6. IF b = "A" then ' wenn b = 65
    7. END IF
    Dies ist ein Unterschied zu QB/VB, wo man einen String nicht einem Byte zuweisen kann.

    675 times viewed