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.
A voir également:
- LANGAGE C
- Langage ascii - Guide
- Langage binaire - Guide
- Langage visual basic - Télécharger - Langages
- Pascal langage - Télécharger - Édition & Programmation
- Langage basic gratuit - Télécharger - Édition & Programmation
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
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++;
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);
}
#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);
}