Re: Neue Beta (Long Integer) Kategorie: Programmierung C (von PeterS - 30.08.2010 13:17) | |
Als Antwort auf Neue Beta (Long Integer) von UKo - 30.08.2010 11:23
| |
> 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 | |
Antwort schreiben Antworten: Re: Neue Beta (Long Integer) (von UKo - 30.08.2010 16:53) 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