LANGAGE C
amin009
Messages postés
121
Statut
Membre
-
pyschopathe Messages postés 2053 Statut Membre -
pyschopathe Messages postés 2053 Statut Membre -
Bonjour,
Bonjour,
je declare une variable entier dans un prog c qui a pour but de deterniner le nombre de chiffres d'un entier ,
mais lorsque je saisi un entier >=32000 le programme affiche comme resultat 15, j'ai besoin d'une explication
merci.
Bonjour,
je declare une variable entier dans un prog c qui a pour but de deterniner le nombre de chiffres d'un entier ,
mais lorsque je saisi un entier >=32000 le programme affiche comme resultat 15, j'ai besoin d'une explication
merci.
Configuration: Windows XP Firefox 2.0.0.18
8 réponses
-
Le problème vient du débordement de la multiplication de i par 10 à chaque tour.
Il vaudrait mieux diviser n, on ne déborderait jamais -
mais ton code plz, le problème doit venir d'ailleur car entier -> int va jusqu'a 32767 je crois donc c'est autre chose
-
Bonjour,
Et tu le fais comment ton calcul du nombre de chiffres ?
Il faut être plus précis...
J'ai deux méthodes en tête, sans chercher :
Utiliser une fonction Logarithme base 10, qui te donne directement ton résultat (à plus ou moins 1, je crois)
ou un truc du genre :
count=0;
do
{
count++;
nb /= 10;
} while (nb);
Ou plus court, mais pas forcement plus propre :
count=1;
while (nb/=10) count++; -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
je crois qu'un entier dépasse 32000 se convertir son code ASCI SUR UN NOMBRE DE BIT PLUS QU'UN ENTIER <3200
-
voici le code:
#include <stdio.h>
void main()
{
int n,i,ch;
printf("donner un nombre";
scanf("%d",&n);
ch=0;
i=1;
while ( n/i !=0)
{ch=ch+1;
i=i*10;}
printf(""%d",ch);
} -
essaye de remplacer :while ( n/i !=0)
par while ( (double)n/i !=0) -
enfaite non sa marchera pas ce que je viens de dire, mais a mon avis le problème vient du fait que la division n/i qui sont tous les 2 des int donne un résultat à virgule qui ne peut pas être stocker dans un int.
hors la variable temporaire de stockage sera un int..