fremde C Syntax

Moderator Persönliche Seite #482504
Lesenswert?
• ▲
▼
Jakob wrote:

> Und was macht die Funktion insgesamt? Ich komm da nicht ganz mit.

Es ist keine Funktion, sondern ein Makro.  Dessen Inhalt wird beim
Auftreten ersetzt.  Wenn also einer irgendwo im Text
1
x = calc(42, 23, 11);
schreibt, dann ersetzt der Präprozessor das durch
1
x =   ( 0x00000000L +     ( 42 <<  2) +   ( 23  <<  1) +   ( 11  ));
Wobei das "0x00000000L + " natürlich nur eine sehr umständliche
Schreibweise für "hier passiert gar nichts weiter" ist. ;-)
#483732
Lesenswert?
• ▲
▼
Walter wrote:
> hat das 0L nicht vielleicht den Sinn dass die Berechnung in long
> ausgeführt wird??

Das war vielleicht die Intention, aber dazu ist es an der völlig 
falschen Stelle.

Es müssen ja zuerst die Klammerausdrücke berechnet werden und wenn bei 
(Reg3<<2) schon 2 Bits runtergefallen sind, kannse die 32-Bit-Addition 
auch nicht wieder hervorzaubern.


Peter
Gast #483840
Lesenswert?
• ▲
▼
> Es müssen ja zuerst die Klammerausdrücke berechnet werden und wenn bei
>(Reg3<<2) schon 2 Bits runtergefallen sind, kannse die 32-Bit-Addition
> auch nicht wieder hervorzaubern.

bei entsprechenden Zahlen fällt beim Schieben noch nichts runter, 
sondern erst bei der Addition.
Aber der Ausdruck ist sicher nicht besonders guter Programmierstil.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren