Nombre trop grand ?

Signaler
Messages postés
3
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
20 mars 2005
-
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
-
Bonjour à tous,
Voila j'ai récemment fait le programme suivant en C pour résoudre une solution, et malgré tous mes efforts je ne comprends pas pourquoi la condition IF ne marche plus à un certain moment càd lorsque x devient trop grand ..Aidez moi svp à comprendre :
#include <stdlib.h>
#include <stdio.h>

int main(){
int y,x,i,valeur ;
y = 1;
begin:
valeur = 395425559298;
y++;
x = y;
for (i = 1; i<= y;i++)
{
x+=y+i;
}
if(x < valeur){
printf("::%i::\n", x);
printf("%i\n", y);
goto begin;
}
printf("La solution est : %i", y);
getchar();
}
chez moi mon programme s'arrête pour x=288544545 qui est pourtant largement inférieur à 395425559298. Est-ce un problème de mémoire ?

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Parce que
395425559298
ne tient pas sur 32 bits (tu dois avoir un warning à la compilation).
Utilise un __int64, ou un long long int sous gcc
Messages postés
3
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
20 mars 2005

Oh merci beaucoup je ne connaissait pas encore __int64 ( je débute on va dire), très utile à savoir çà.

Arf maintenant c'est bizarre çà ne s'arrête plus ...lol
Merci
Messages postés
3
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
20 mars 2005

arff... que ce soit avec long long int ou __int64, je ne peux qu'obtenir des nombres a 9 chiffres..et le mien en fait 12...
Bon bah je crois que c'est fichu...
Merci quand même
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ces nombre étant codés sur 64 bits, tu as assez de chiffres. Par contre
pour les afficher c'est différent (ce n'est pas %d, mais %ll pour long
long et pour __int64 je ne sais plus).
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
tu peux utiliser une lib grd nombre

http://www.cppfrance.com/code.aspx?ID=25896

par exemple



à part ça , pense à vérifier les limites de tes nombres et les opérations



limits.h sera une premiere piste

++

Nono.