В IAR AVR 4.12 столкнулся вот с чем:
// имею
int data = 0xabd6;
// хочу увеличить разрядность до 32 без знака
unsigned int tmp = (unsigned int) data;
// получаю tmp = 0x0000abd6, что и хотел
а теперь вместо 32 захотел увеличить разрядность до 64 без знака из исходного data
unsigned long long tmp = (unsigned int) data;
// получаю tmp = 0x6dba000000000000
?????????????