Bonjour,
J'ai un petit soucis de compréhension sur la façon dont son stockées les variables dans la mémoire vive. A priori si je créer un variable de type long, je ne devrais pas pouvoir stocker de nombre décimal, or avec un code tout simple j'obtient une valeur décimale dans une variable de type long.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
double Nombre3 = 0;
double Nombre4 = 0;
double ResultatDivision = 0;
long ResultatDivisionEntier = 0;
 
printf("Faisons une division de nombres decimaux \nTaper le numerateur :");scanf("%lf", &Nombre3);
printf("Taper le denominateur :");
scanf("%lf", &Nombre4);
ResultatDivision = Nombre3 / Nombre4 ;
ResultatDivisionEntier = Nombre3 / Nombre4 ;
printf("Le resultat est %lf \n", ResultatDivision);
printf("Le resultat (partie entiere) est %lf", ResultatDivisionEntier);
et voici ce qui s'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Faisons une division de nombres decimaux
Taper le numerateur : 5
Taper le denominateur : 2
Le resultat est 2.500000
Le resultat (partie entiere) est 2.500000
Comment est-ce possible d'avoir "Le resultat (partie entiere) est 2.500000", alors que ResultatDivisionEntier est un long ?

J'ai essayé en simplifiant (oui encore) le programme et en mettant que la partie concernant le resultat entier. Ca donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
double Nombre3 = 0;
double Nombre4 = 0;
long ResultatDivisionEntier = 0;
 
printf("Faisons une division de nombres decimaux \nTaper le numerateur :");scanf("%lf", &Nombre3);
printf("Taper le denominateur :");
scanf("%lf", &Nombre4);
ResultatDivisionEntier = Nombre3 / Nombre4 ;
printf("Le resultat (partie entiere) est %lf", ResultatDivisionEntier);
et le Résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Faisons une division de nombres decimaux
Taper le numerateur : 5
Taper le denominateur : 2
Le resultat (partie entiere) est 0.000000
Autrement dit, cette fois-ci c'est cohérent puisqu'il ne reconnait pas ResultatDivisionEntier comme un nombre décimal.

Alors si quelqu'un comprend ce qui se passe je suis preneur d'une explication !!
Merci

Bien sur ce programme n'a aucun intérêt, mais ça me paraît dérangeant de réserver un emplacement mémoire pour un entier et d'en retirer un décimal.:
roll: