PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "typecast" unter bascom



ch4
08.03.2006, 21:30
Hallo,
gibt es eine Möglichkeit, z.b. zu einer word-variable eine long-variable zu addieren?

In C gabs ja das typecasting, wie geht das unter bascom?

danke!

albundy
09.03.2006, 09:54
Wo ist das Problem ?

Dim X as Long, Y as Word

X=123456789
Y=43211
X=X+Y 'X=123500000

ch4
09.03.2006, 21:59
ich habs eigentlich umgekehrt gemeint:


Dim X as word, Y as long

X=1000
Y=2000
X=X+Y



Da bekomme ich einen Fehler

ruediw
09.03.2006, 23:48
Du kannst immer problemlos von einer Variable die weniger Speicherplatz benötigt (in Pascal z. Bsp. Byte) zu einer casten die mehr Speicherplatz benötigt. (in Pascal z.Bsp. Integer).
Umgekehrt ist es nicht mehr so einfach, da die Zahl nicht in den zur Verfügung stehenden Speicher passen würde.Da musst Du dich entscheiden welches Byte (das untere oder obere) du casten willst.

z.Bsp.

Var
a : Byte; { 8 Bit }
b : Word; { 16 Bit }
c: Byte;

a := 200;
B: 1000; { Passt nicht in 1 Byte }
c := a: { geht problemlos, da beide 1 Byte=8 Bit }
C := B; { geht nicht, da B eine 16 Bit Zahl ist }

Was geht:
C := (B AND $00FF) ; { untere 8 Bits von B werden rausgeschnitten }
C := ((B AND $FF00) SHL 8) { obere 8 bits werden rausgeschnitten und um 8 stellen nach links verschoben und passen nun in 1 Byte }

So ähnlich sollte es gehen. Schau mal in deinem Handbuch / deiner Hilfe zu deinem Compiler nach..