Casting

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

Hinweis kann nach Kenntnisnahme deaktiviert werden!

  • 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 (niederwertigste 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:

    Quellcode

    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-Quellcode

    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.

    4.711 mal gelesen