Zdravím, mám jednoduchý kód a není mi jasné jak a kde se provede přetypování proměnné a, která vstupuje jako jednobajtová, ale aniž by byla přetypovaná, tak se z ní po bitovém posunu stane dvoubajtová? Výsledek je 0xABCD, ale v při tom bitovém posunu bych očekával, že se registr postupně vyprázdní do nuly a výsledek bude jen 0xCD.
int main(void) {
unsigned char a = 0xAB;
unsigned char b = 0xCD;
unsigned short x = ((a << 8) | b);
printf("Answer is 0x%.4X", x);
return 0;
}