Pour lire un int
en utilisant scanf, nous utilisons:
scanf("%d", &i);
Que faire si i
est un long
pas int
??
Remarque: lorsque vous utilisez %d
avec long
ça me donne un avertissement irritant ..
Utilisez simplement
long l;
scanf("%ld", &l);
ça me donne un avertissement irritant ..
Cet avertissement est tout à fait juste. Cela implore la corruption de la pile.
Pour l'amour de Dieu:
long n;
scanf( "%ld", & n );
scanf("%ld", &i);
Vous pouvez aussi utiliser "%Ld"
pour un long long
(et selon votre compilateur, parfois aussi "%lld"
).
Jetez un œil à la section Conversions de la page de manuel de scanf pour en savoir plus. (Utilisez simplement Google si votre système n'a pas de pages de manuel).
Chaque spécificateur de conversion s'attend à ce que son argument correspondant soit d'un type spécifique; si le type de l'argument ne correspond pas au type attendu, le comportement n'est pas défini. Si vous voulez lire un long avec scanf()
, vous devez utiliser le %ld
spécificateur de conversion:
long i;
scanf("%ld", &i);
Consultez en ligne projet de norme C (fichier .pdf), section 7.19.6.2, paragraphe 11 pour une liste complète des modificateurs de taille et des types attendus.