Lors de l'affectation de long à court, LSB 2 octets est 0, où MSB est rempli avec des valeurs provenant des valeurs de l'algorithme func1() de la pile. Pourquoi cela se produit-il, pourquoi le compilateur essaie-t-il d'obtenir ces valeurs indésirables sur les 2 octets MSB?Affectation longue non signée courte à non signée
#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
}
Il vous manque des types de retour et des prototypes. func1() renvoie int, pas court. –
Vous avez copié et collé le code fixe que j'ai fourni mais vous n'avez pas dit si cela répond maintenant au problème perçu? –