Re: C: co lze očekávat
Jindroush
jindroush na seznam.cz
Pondělí Srpen 29 12:35:12 CEST 2016
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 <jindroush at seznam.cz>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20160829/ca84e751/attachment.html>
Další informace o konferenci Hw-list