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