Conversion
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.
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
7 réponses
-
Le problème c'est que tu travailles avec des entiers de 16 bits
quand tu es rendu à 5 chiffres, tu essayes ensuite une division par 100 000 pour tester s'il y a un sixième chiffre. Mais ta multiplication 10 000 par 10 ne te donne pas 100 000 (qui ne tient pas sur 16 bits) mais je ne sais quel nombre (tu peux le vérifier en faisant des print
Il serait beaucoup plus simple de diviser ton nombre par 10 à chaque tour, il n'y aurait jamais de débordement -
#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);
} -
Comment je peux le savoir si tu ne le montres pas ?
-
COMMENT JE CORRIGE MON PROGRAMME?
-
Un programme qui donne de réponses correctes dans certains cas n'est PAS un programme correct s'il en donne des mauvaises dans d'autres cas.
Tu ne trouves pas ça évident ? -
mon programme est fonctionne correctement a des entiers <32000 ?
-
Bonjour
L'explication, c'est que ton programme est mal fait.
Pour pouvoir te dire plus de détails, il faudrait que tu le montres.
La limite ne serait pas plutôt 32768 ?