Re: Neue Beta (Long Integer) Kategorie: Programmierung C (von UKo - 30.08.2010 16:53) | ||
Als Antwort auf Re: Neue Beta (Long Integer) von PeterS - 30.08.2010 13:17 | ||
| ||
> > 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 | ||
Antwort schreiben Antworten: Re: Neue Beta (Long Integer) (von PeterS - 30.08.2010 17:19) Re: Neue Beta (Long Integer) (von UKo - 30.08.2010 18:12) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum