Soucet v C

Michal G. MichalGregor
Středa Březen 17 14:28:40 CET 2004


Pretypov?n? pomohlo, uz to poc?t? i s pretecen?m. Ale podle knihy co m?m
(Pavel herout Ucebnice C), by se to mnelo delat automaticky.
Michal

----- Original Message -----
From: "Snail Instruments" <snail@iol.cz>
To: <hw-news@list.gin.cz>
Sent: Saturday, May 25, 2002 7:01 AM
Subject: Re: Soucet v C


> >1)
> >ADRES a pole  U_Bat_Buf[2] je d?lky 8 bit? unsigned
> >U_Bat_Prum je 16 bit? unsigned.
> >U_Bat_Prum=U_Bat_Buf[0]+ADRES;
> >Tento ??dek CCX5 nepo??t? korektn?, v?sledek je dlouh? pouze 8 bit?.
>
> Jsou tu nepochybne vetsi experti na C, ale rekl bych, ze toto je spravne.
Oba operandy jsou unsigned char, vysledek je take unsigned char. Kdyz ho
ukladate do unsigned int, mel by se pritom snulovat vyssi byte, ale prenos
je jednou provzdy ztracen.
>
> >Kdy? uprav?m pole U_Bat_Buf[2] na uns16 u? to po??t? spr?vn?.
> >Znamen? to ale zpomalen? v?po?tu, del?? program a v?ce RAM. Nelze to
> >ud?lat n?jak jinak?
>
> A co jenom pretypovat : U_Bat_Prum=(uns16)U_Bat_Buf[0] + (uns16)ADRES;
>
> >2)
> >  U_Bat_Prum=U_Bat_Buf[0]+ADRES+25; se mu nel?b?
>
> CC5x neni ANSI C, projdete si manual. Aritemeticke vyrazy jsou omezeny na
jednu operaci, muze byt kombinovana pre/postinkrementem, nejakou
dereferenci, ale komplexni vyrazy je treba rozlozit.
>
> J. Hanzal
>
>
>





Další informace o konferenci Hw-list