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