Bonjour tout le monde. Moi c'est Matsui, je viens de débuter le C et je fais quelques exos. Le C en lui même ça va, logique, tout va bien, par contre je bute pas mal sur les notions mathématiques étant issu d'une filière littéraire. Voici mon problème :
J'ai fais un exercice, il s'agissait de comprendre le code suivant et de donner les résultats avant de le compiler, mes commentaires sont mes réponses :
#include <stdio.h>
int main ()
{
int n = 543 ;
int p = 5 ;
float x = 34.5678 ;
printf ("A : %d %f\n", n, x) ; /* affiche correctement, int 543 et float 34.567800 */
printf ("b : %4d %10f\n", n, x) ; /* affiche ^543, ^34.567800*/
printf ("C : %2d %3f\n", n, x) ; /*affiche 543, car printf affiche le nombre de gabarit nécessaire, 34.5678 */
printf ("d : %10.3f %10.3e\n", x, x) ; /*affiche, ^^^^34.567, ^^^^34.567e+000*/
printf ("e : %*d\n", p, n);/* 543 suivit de 5 espaces*/
printf ("f : %*.*f\n", 12, 5, x); // ^^^34.5678
}
voici le résultat
A : 543 34.5677986145
b : 543 34.567799
C : 543 34.567799
d : 34.568 3.457e+01
e : 543
f : 34.56780
J'ai a peu près bon, mais pourquoi printf n'affiche les 800 ? J'ai plus ou moins compris le concept de contracture, mais pourquoi ? Le Float n'est pas assez grand pour le contenir ? J'y ai pensé mais j'y crois moyen.
Voilà, merci à vous.