C: arithmetic overflow

Jaromir Sukuba jarin.hw na gmail.com
Pondělí Únor 25 19:37:40 CET 2019


Jedno z klucovych slov tu moze byt "integer promotions"
https://wiki.sei.cmu.edu/confluence/display/c/INT02-C.+Understand+integer+conversion+rules
https://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en555854.pdf
a z manualu kompilatora (predpokladam ze mate XC8)
http://ww1.microchip.com/downloads/en/devicedoc/50002053g.pdf kapitola
5.6.1 a pripadne aj kapitolu 5.4.6.1

Do pozornosti davam aj to, ze na zaciatku kapitoly 5.6 je odvolavka na
appendix D, co je spravanie kompilatora nedefinovane v normach (ale
nejako to urobene byt musi), co moze vysvetlovat "ale mne to funguje s
vysledkom X" (v kompilatore Y).

J.

po 25. 2. 2019 o 19:27 Miroslav Draxal <evik na volny.cz> napísal(a):
>
> TRISA &= (uint8_t)(((~0b00001111u & 0xff)| shadowDataTris);
>
> Taky je OK.
>
> Takže to vypadá že ta tu negaci to takhle hodí do uint16_t
>
> Ještě jednou díky. Míra
>
>
>
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jaroslav Buchta
> Sent: Monday, February 25, 2019 7:17 PM
> To: hw-list na list.hw.cz
> Subject: Re: C: arithmetic overflow
>
>
>
> Nevim, no, chce to asi zkouset ruzne varianty - ne to prijde korektni. Ta konstanta bude unsigned int, negace taky, or s 8b jde a pak se to pretypuje a to by melo byt OK.
>
> Zkusil bych mozna TRISA &= (uint8_t)(((~0b00001111u & 0xff)| shadowDataTris);
>
>
>
> Dne 25.02.2019 v 19:10 tomas mainzer napsal(a):
>
> DD, mozna kvuli  0b00001111u  - to u na konci je unsigned (int), v negaci pak zrejme mimo uint8 rozsah . T.
>
>
>
> po 25. 2. 2019 v 18:59 odesílatel Miroslav Draxal <evik na volny.cz> napsal:
>
> Dobrý den,
>
> Znalý pánové, proč to stále hází to varování?
>
>
>
> uint8_t shadowDataTris;
>
>
>
> #define TRISA TRISA
>
> extern volatile unsigned char           TRISA               __at(0xF92);
>
>
>
> TRISA &= (uint8_t)(~0b00001111u | shadowDataTris);
>
>
>
> warning: (751) arithmetic overflow in constant expression
>
>
>
> Míra
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
>
> HW-list mailing list  -  sponsored by www.HW.cz
>
> Hw-list na list.hw.cz
>
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list