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