C: reverzne cykly

Miroslav Mraz mrazik na volny.cz
Úterý Červenec 30 15:44:09 CEST 2024


Logicky nelze celé číslo nezáporné (unsigned) testovat, jestli je větší 
nebo rovno nule (menší než nula). To je z definice vždy (nikdy). Takže 
použijte signed.
Z minulého vlákna bych si odnesl poznatek, že nemá příliš smysl zúžit 
řídící proměnnou cyklu na 1 byte, protože se stejně bude počítat v 
nativním int. Ale u 8-bitů se všemi jejich specifiky bych si zase tak 
jistý nebyl. U 32-bit je opravdu lepší nativní int i když je zbytečně 4 
bytový. Vygenerovaný kód bývá přehlednější.

Mrazík

PS. Taky jde použít např.
const int max = 10;
char pole [max];
for (unsigned n=max; n>0u; n--) {
   const unsigned index = n - 1u;
   char element = pole [index];
   // ...
}

On 30. 07. 24 15:07, Jan Waclawek wrote:
> [preposielam]
> ...
> 
> Mne sa riesenie for(unsigned char i = 3; i != 255; i--) velmi nepaci. A pri
> verzii for( i = 3; i >=0; i--) mi zase krici kompilator na podmienke i
>> =0...
> 
> Herout, Bing ani ChatGPT mi ziadne uspokojive riesenie nenasli. Ako to
> napisat aby to bolo OK?
> 
> Velmi pekne dakujem za odpovede.
> 


Další informace o konferenci Hw-list