RE: C: co lze očekávat
Miroslav Draxal
evik na volny.cz
Pondělí Srpen 29 13:02:06 CEST 2016
V tom odkazu je to dost jasně popsané. Mě zmátlo, jak jste posílal x—(asi spíše mělo byt x+1)
Problém je, že v C přemýšlím jako v ASM.
Díky
PS. Nějak jsem předpokládal, že X je char, tak se k tomu bude kompilátor všude chovat jako k char.
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jindroush
Sent: Monday, August 29, 2016 12:57 PM
To: HW-news
Subject: Re: C: co lze očekávat
Proste ukazovat pointerem mimo objekt a pak nad nim delat aritmetiku je nedefinovane chovani. Reseni neni rozcilovani, ale uprava kodu tak, aby dochazelo jen k definovanemu chovani.
J.
On 29.8.2016 12:53, Miroslav Draxal wrote:
Je to hodně zjednodušené, to x se používá v programu. Nějak nerozumím tomu, že si kompilátátor může dělat co chce. Je to char, obsahuje hodnotu 0xff, po odečtení musí přetéct do nuly.
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jindroush
Sent: Monday, August 29, 2016 12:35 PM
To: HW-news
Subject: Re: C: co lze očekávat
Asi prijdu s Wekem po funuse, ale obecne je to x-- undefined behaviour a kompilator muze delat, co chce ;-)
http://stackoverflow.com/questions/18186987/decrementing-a-pointer-out-of-bounds-incrementing-it-into-bounds i s odkazy na c99
On 29.8.2016 12:22, Miroslav Draxal wrote:
Dobrý den,
Minulý týden jsem zde dával report o pnou předpokládané chybě c XC8. Nějak v tom tápe i Michrochip. Mám dojem, že na tam mají zaměstnaného studenta, který filtruje zprávy. Jednou píše že je to OK, jednou že je to chyba. Co na to zdejší odborníci na C. O co jde.
Mějme následující kód.
char arrayA[3]@0x123;
char x;
x = 0;
x--; // x=0xff
if ( arrayA[x + 1]) {……..}
z jaké adresy má brát if prvek z pole array? Jedná se mi o ten konstrukt x+1. X je char, čili přeteče na 0x00. Má ukazovat na 0x123 nebo má brát konstrukt arrayA[x + 1]) přetečení a ukazovat na 0x223?
U XC8 to teď to je tak, že pokud je array uloženo na 0x023 tak toto ukazuje na adresu 0x023 a pokud je array uloženo na 0x123 tak to ukazuje na adresu 0x223.
Jak to tedy je?
--
Jindroush <mailto:jindroush na seznam.cz> <jindroush na seznam.cz>
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
--
Jindroush <mailto:jindroush na seznam.cz> <jindroush na seznam.cz>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20160829/9e90f504/attachment.html>
Další informace o konferenci Hw-list