Re: Problém s C kompilátorem nebo mezi klávesnicí a židlí?

Jakub Ladman ladmanj na volny.cz
Neděle Červenec 7 20:18:27 CEST 2019


Lepší dočíst trochu dál ...

Dne 07. 07. 19 v 20:03 Jindroush napsal(a):
> Nedocetl jsem, ale hned se zeptam:
> if(length/0x100)
>             biboch = 0x100;
>         else
>             biboch = length%0x100;
>
>         data[3] = (biboch & 0xff);
>
> Je vam jasne, ze v pripade, ze length >= 0x100, bude v data[3] vzdy 0?

Hw je úplně blbý, a neumí poslat 0 bajtů, jen 1 až 256 a kolik toho má 
poslat se mu říká právě jedním bajtem.

Tedy 0 znamená 256

Při prvním průchodu, když length je >= 0x100 bude data[3] = 0, ale po 
načtení prvního balíku dat se do stejného místa dostanu s length 
zmenšeným o těch 0x100 a pak nakonec mi zbyde poslední paket, který bude 
kratší než 0x100 a pro něj bude data[3] nenulové.

Možná je tam někde nějaká jiná chyba, ale vzhledem k tomu že mám vypnuté 
optimalizace by mi to samovolně nemělo proměnnou vynulovat když vlezu do 
while smyčky.

Nebo jo? Napadá mě, že to je nějaká bezpečnostní featura, ale spíš mi 
přijde že to je blbost.

BTW: když je proměnná static, tak je to ok.

J.



Další informace o konferenci Hw-list