Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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)