[elektro] C18 kérdés

Skandar Graun sgraun at gmail.com
Fri Oct 11 19:21:36 CEST 2013


Köszi.


2013. október 11. 19:06 potyo írta, <potyo.ada at gmail.com>:

> az attól függ, mit akarsz :-))
>
> de inkább
> x=*(unsigned int *)&tomb[0];
>
> Kell a csillag a zárójel elél, hogy az értéket kapd vissza a memóriacímről.
> Csillag nélkül a tomb[0] memóriacíme kerülne az x változóba.
>
>
> 2013. október 11. 19:01 Skandar Graun írta, <sgraun at gmail.com>:
>
> > Akkor ez így is jó lenne?
> >
> >  x = (unsigned int *)&tomb[0];
> >
> >
> > 2013. október 11. 0:46 potyo írta, <potyo.ada at gmail.com>:
> >
> > > 2013. október 11. 0:34 flaist írta, <flaist at gmail.com>:
> > >
> > > > Sziasztok!
> > > >
> > > > Adott a következő adat mozgatás C18-ban.
> > > >
> > > > unsigned char tomb[12];
> > > > unsigned int      x;            //C18-ban 2 byte-t jelent
> > > >
> > > > x = (unsigned int) tomb[0];
> > > >
> > > > Hibátlanul lefordul, de csak 1 byte-t másol, tomb[1]-t nem viszi át..
> > > >
> > > > Ez viszont jó lesz!
> > > >
> > > > x = (unsigned int)* (unsigned int *)&tomb[0];
> > > >
> > > > Nem értem az első mért nem jó?
> > > >
> > > > C18 hiba, vagy a jogos amit csinál?
> > >
> > >
> > > Jogos. Az első esetben azt csinálod, hogy kiolvasod a tomb[0]
> tartalmát,
> > és
> > > magát az értéket castolod két bájtra. Mivel a tomb[0] csak egy bájtos,
> > > ezért ezt az egy bájtos értéket másolja át az x változóba. Ez ugyanaz,
> > > mintha azt írnád, hogy x=tomb[0];
> > >
> > > A második eset viszont azért jó, mert a tomb[0] memóriacímét kiszeded,
> > ezt
> > > castolod, hogy ne egy, hanem két bájtos típusra mutatóként legyen
> > > értelmezve a továbbiakban, majd dereferenciálod a mutatót, ami azt
> > jelenti,
> > > hogy kiolvasod a kétbájtos értéket az adott memóriacímtől kezdődően,
> majd
> > > ezt castolod két bájtosra (ennek amúgy nincs jelentősége), és ezt az
> > > értéket másolod be az x változóba.
> > > -----------------------------------------
> > >           elektro[-flame|-etc]
> > -----------------------------------------
> >           elektro[-flame|-etc]
> >
> -----------------------------------------
>           elektro[-flame|-etc]
>


More information about the Elektro mailing list