При присваивании от длинного к короткому, младшие 2 байта равны 0, где MSB заполняется значениями из алгоритма func1 () из стека. Почему это происходит, почему компилятор пытается передать эти ненужные значения в MSB 2 байта?
#include <stdio.h>
unsigned short func1(void); // NB: function prototype !
int main(void)
{
unsigned long int L = 0;
unsigned short K = 0;
L = func1();
printf("%lu", L); // prints junk values
K = L;
printf("%u", K); // prints 0
return 0;
}
unsigned short func1(void)
{
unsigned short i = 0;
// Algorithm Logic!!!
return i; // returns 0
}