Forum: Mikrocontroller und Digitale Elektronik integer an long integer übergeben


von Jens G. (Firma: fa. Seuffer) (willi-helmchen)


Lesenswert?

Hy Leute,
ich hab mal eine Frage zum Verständnis. ich will in meinem Programm eine 
singed integer an eine Long singned Integer übergeben. Und mache das 
derzeit so:

signed int a = 0;
long signed int b = 0;

a= IrgendeinWert;

....

b=a;


Ist das so richtig und wenn ja, ist in C definiert das die oberen Bits 
der long Integer die in dem Moment nicht benötigt werden mit 0 gefüllt 
werden, oder bleibt da der Wert stehen der vorher drin war??
Gibt es einen Möglichkeit die oberen noch "unbenötigten" bits der Long 
integer definiert auf null zu setzen und gleichzeitig die Variable zu 
zuweisen also so in etwa so

b = (highBits=0 und lowbits=a) //ist natürlich Pseudocode

von Johannes M. (johnny-m)


Lesenswert?

Wenn Du einer Variable einen Wert zuweist und dieser Wert in die 
Variable hineinpasst, dann steht in der Ergebnisvariable hinterher genau 
das, was Du zugewiesen hast. Mit Nullen füllen ginge übrigens schon aus 
dem Grund nicht, dass es sich um vorzeichenbehaftete Werte handelt und 
dementsprechend Nullen u.U. tödlich wären (Zweierkomplement). Das 
signed kann man übrigens weglassen, ein int ist per Definition 
signed . Es muss nur angegeben werden, wenn es explizit unsigned 
sein soll.

von Jens G. (Firma: fa. Seuffer) (willi-helmchen)


Lesenswert?

also müsste das ganze so aussehen:

int a = 0x0000;
long int b = 0xA1000000;

a = 0x2bc8;

...

b = a;


Dann ist b nach der neuen Zuweisung auf jeden Fall

b = 0x00002bc8 und nicht b=A1002bc8

oder mache ich da nen Denkfehler??

von ... .. (docean) Benutzerseite


Lesenswert?

genau...(und nein kein Denkfehler)

ein Zuweisung überschreibt immer den KMPL. Inhalt der Variable...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.