LANGAGE C
amin009
Messages postés
112
Date d'inscription
Statut
Membre
Dernière intervention
-
pyschopathe Messages postés 1974 Date d'inscription Statut Membre Dernière intervention -
pyschopathe Messages postés 1974 Date d'inscription Statut Membre Dernière intervention -
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
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- 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);
}