Arduino - 32 bitu promenna ze 4 byte
Jan Waclawek
konfera na efton.sk
Úterý Prosinec 17 16:28:17 CET 2024
Co je to "spravne"?
Z pohladu "funkcnosti" to je "spravne". C99 6.4.4.1 Integer constants
hovori, ze typ konstanty je dany prvym typom z nasledovnej tabulky, do
ktorej konstanta "vojde". A tabulka pre sestnastkovu konstantu je:
int
unsigned int
long int
unsigned long int
long long int
unsigned long long int
No a v avr-gcc prvym typom z tabulky do ktoreho vojde 0xFFEF1000 je
unsigned long int (= uint32_t pre pripad toho avr-gcc).
A tiez je to "spravne", lebo je to priame priradenie (no dobre,
inicializator, ale funguje ako priradenie), t.j. nie je to vyraz a
prebehne tam len pomerne priamociara konverzia.
Z metodickeho pohladu to nie je "spravne", lebo je lahke sa pomylit (a
zabudnut na ten suffix ked je ta konstanta pouzita vo vyraze, kde
konverzie sposobia necakany vysledok, alebo kebyze ma najvyssi bit nulovy
cim sa stane znamienkova a je pouzita v nejakom vyraze kde ta
znamienkovost zmeni vysledok), a preto je lepsie ten suffix vzdy
explicitne napisat.
wek
----- Original Message ---------------
>[preposielam]
>
>Ahoj,
>
>myslim, ze nie, pretoze definujem vsetky 4 byty premennej. Potrebne by to
>bolo, keby som definoval len 1, 2 alebo 3 byty. Ale isty som si moc nie.
>A.
>>>>
>
>neměl by ten zápis správně být jako
>unsigned long int Delay=0xFFEF1000ul; ?
>
>MB
>
Další informace o konferenci Hw-list