OT: c: mismatched comparison

Jan Waclawek konfera na efton.sk
Pondělí Červenec 29 13:35:31 CEST 2024


Tie uint8_t sa rozsiria na int16_t, a ako int16_t prebehne to odcitanie a
aj to porovnanie.

Inaksie povedane, ten prekladac asi z niecoho vie usudit, ze CisloSekce je
stale nulove, t.j. prava strana je stale zaporna, a lava nikdy nemoze byt
zaporna, preto krici.

wek


----- Original Message ---------------
>Dobrý den ve spolek.
>
>Uµ del±í dobu si lámu hlavu nad tím, co se nelíbí překladači. Je to tedy
>vyseparované z daleko sloµitěj±í podmínky, ale tohle ten problém způsobuje. 
>
> 
>
>Microchip
>
>XC8 ver.2.46
>
> 
>
>uint8_t RucneCisloSekce;
>
>uint8_t CisloSekce;
>
> 
>
>if (RucneCisloSekce == (CisloSekce - 1u)) {
>
>  NOP();
>
>}
>
> 
>
>Hlásí warning: (764) mismatched comparison
>
>Coµ je 
>
>(764) mismatched comparison (Code Generator)
>
>A comparison is being made between a variable or expression and a constant
>value which is not in
>
>the range of possible values for that expression, for example:
>
>unsigned char c;
>
>if(c > 300) /* oops -- how can this be true? */
>
>close();
>
> 
>
> 
>
>pokud odstraním -1, potom OK.
>
>Ano, můµe to přetéct z 0x00 do 0xff, ale to není "mismatched comparison"
>
>???
>
> 
>
>Díky za vysvětlení, Míra
>
> 
>



Další informace o konferenci Hw-list