IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

long me renvoie un nombre négatif


Sujet :

Langage C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 415
    Points : 125
    Points
    125
    Par défaut long me renvoie un nombre négatif
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    long num = 10;
    for (long i = 0; i< 600000000; i++) 
    { 
      num += i;
    }
    num me renvoit un nombre négatif

    merci ?

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gia,

    As-tu estimé la valeur finale attendue ?

    Quelle est la taille de ton long ? (Ça dépend du compilateur et de sa version)
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (long i = 0; i< 600000000; i++)
    il faut mettre un 'L' comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (long i = 0; i< 600000000L; i++)
    Je pense, afin de bien indiquer que le nombre est aussi un statique (même si la limite n'a pas été dépassée )

    EDIT : complètement à coté de la plaque.
    num aura une très très grande valeur, vous ajoutez 600000000 + 599999999 + 599999998 ... ce qui donne tout de même une immense valeur, vous ne pensez pas ? (Avec beaucoup de malchance, plus grande que la représentation d'un long signé).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Immense valeur égale à (10 +) 600000000 * (600000000 + 1) / 2 ~ 1.8.1017.
    • Si la taille du long fait 32 bits, la valeur maximale est de 231-1 ~ 2.1.109 => on dépasse ;
    • Si la taille du long fait 64 bits, la valeur maximale est de 263-1 ~ 9.2.1018 => ça passe.

Discussions similaires

  1. Représentation hexa d'un nombre négatif
    Par sone47 dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/02/2007, 17h26
  2. multiplication d'un nombre négatif
    Par tets88 dans le forum Access
    Réponses: 5
    Dernier message: 05/05/2006, 16h39
  3. Problème de tri de nombre négatif dans un état
    Par loutsky dans le forum Access
    Réponses: 11
    Dernier message: 21/04/2006, 14h30
  4. [D7 Ent. / XP] Trunc() sur un nombre négatif
    Par Magnus dans le forum Langage
    Réponses: 14
    Dernier message: 17/06/2005, 16h45
  5. [68000] EXT nombre négatif
    Par fastzombi dans le forum Autres architectures
    Réponses: 2
    Dernier message: 02/05/2004, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo