Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > > > Hallo Peter, > > > > > ich war richtig happy, dass die neue beta jetzt long Variablen anbietet. > > > > > Ich gehe mal davon aus, dass bei long-Ausdrücken int oder word Anteile in long gewandelt werden. > > > > > Die Hilfe sagt dazu (noch?) nix. > > > > > Das scheint aber nur manchmal zu funktionieren. > > > > > > > > > > folgendes geht nicht: > > > > > long L; > > > > > word W; > > > > > > > > > > W=15; > > > > > L= 20000 + W * 1000; ==> ergibt -30536 > > > > > ------------------------------------- > > > > > so geht es: > > > > > long L; > > > > > word W; > > > > > > > > > > W=15; > > > > > L= 20000; > > > > > L= L + W * 1000; ==> ergibt 35000 > > > > > ------------------------------------ > > > > > so geht es auch: > > > > > unsigned long L; > > > > > word W; > > > > > > > > > > W=15; > > > > > L= 20000; > > > > > L= L + W * 1000; ==> ergibt auch 35000 > > > > > ------------------------------------------ > > > > > Gruss > > > > > Ulrich > > > > > > > > Hallo Ulrich, > > > > > > > > der default ist (wie bei C auch) immer int. Wenn bei der Arithmetik einer der beiden > > > > Operanden einen "höheren" Typ hat, wird es in long umgewandelt. Dies ist bei > > > > "20000 + W * 1000" aber nicht der Fall. Der Ausdruck funktioniert dann, wenn entweder W > > > > vom Typ long ist, oder Du 1000L oder 20000L bei ein der der Konstanten schreibst. > > > > > > > > So wird aber "20000 + W * 1000" als integer Ausdruck ausgewertet und dann einem long > > > > zugewiesen. > > > > > > > > Gruss Peter > > > > > > Hallo Peter und Jörg, > > > Danke für die Hinweise! > > > Der Ausdruck lautete im Original: > > > > > > respLong = ascWord(response[1])*16 + ascWord(response[2]); > > > if (i >= 6){ > > > respLong=respLong + ascWord(response[3])* 4096 + ascWord(response[4])* 256; > > > } > > > if (i == 8) { > > > respLong=respLong + ascWord(response[5])* 1048576 + ascWord(response[6]) * 65536; > > > } > > > > > > ascWord wandelt ein ASCII char in ein word > > > respLong ist vom Typ long. > > > > > > Frage: Ist es jetzt ausreichend in e i n e m der Summanden pro Zeile hinter die Konstante > > > (z.B. 4096) ein l zu schreiben oder muss das bei jedem Summanden so sein( auch 256l)? > > > > > > Gruss Ulrich > > > > Da "*" Prezedenz über "+" hat, muß das "L" bei 4096 und 256 sein. Eleganter wird ascWord zu > > ascLong. 65536 und 1048576 werden natürlich automatisch in longs verwandelt. > > > > Gruss Peter > Ja, hab ich verstanden. Allerdings könnte ascLong max den Wert 15 ergeben was 'n bisschen > wenig für 'n long ist.... > Nochmal Danke für die Tips und überhaupt für lange Integer - das kam aber auch genau zu der Zeit, > als ich das brauchte. > Gruss Ulrich