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

C Discussion :

Problème de déclaration d'une variable d'un grand nombre


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Par défaut Problème de déclaration d'une variable d'un grand nombre
    Bonjour a tous,

    J'ai un problème au niveau d'une déclaration de variable.

    J'utilise DEV c++, ma source est en C.
    Je voudrais stocker la valeur 13551753600 dans une variable.

    J'ai tenté avec unsigned long long nb=13551753600;
    J'ai tenté avec long long test=13551753600;

    A chaque fois le compilateur me renvoie: integer constant is too large for "long" type.

    Je précise que 13 551 753 600 est inférieur à X.10^12 donc il devrait rentrer dans un unsigned long long !!!!!

    Merci d'avance.
    Jack.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ce n'est pas par rapport à 10^12 mais 2^12 qu'il faudrait tester..

    Pourquoi pas utiliser float ou double ??

  3. #3
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par jack_x4
    Bonjour a tous,

    J'ai un problème au niveau d'une déclaration de variable.

    J'utilise DEV c++, ma source est en C.
    Je voudrais stocker la valeur 13551753600 dans une variable.

    J'ai tenté avec unsigned long long nb=13551753600;
    J'ai tenté avec long long test=13551753600;

    A chaque fois le compilateur me renvoie: integer constant is too large for "long" type.

    Je précise que 13 551 753 600 est inférieur à X.10^12 donc il devrait rentrer dans un unsigned long long !!!!!

    Merci d'avance.
    Jack.
    Et comme ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned long long nb=13551753600LL;

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Par défaut
    Je ne souhaite pas faire un test, je souhaite déclarer une variable contenant 13551753600. ( 13 551 753 600 )

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Par défaut
    unsigned long long nb=13551753600LL; !!!!!!!

    Merci Crocodilex, cette déclaration fonctionne, mais pourquoi les LL à la fin, je n'ai jamais vu nul part des lettre à la fin d'une déclaration.

    Et au niveau de l'affichage de cette variable je suppose qu'on ne devrait pas utiliser %d

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    parce que en C un L à la fin d'un chiffre "en toutes lettres" ( ) indique un long, et un LL indique un long long.. Sinon le compilo le prend pour un int par défaut...

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jack_x4
    unsigned long long nb=13551753600LL; !!!!!!!

    Merci Crocodilex, cette déclaration fonctionne, mais pourquoi les LL à la fin, je n'ai jamais vu nul part des lettre à la fin d'une déclaration.
    Il faut ouvrir ton livre de C plus souvent...

    Une constante numérique est de type int :

    123 : int

    ou double, par défaut :

    12.3

    on peut utiliser un suffixe pour préciser le type :

    123U : unsigned int
    123L : long
    123UL : unsigned long
    12.3F : float
    [C99]
    123LL : long long
    123ULL : unsigned long long
    Et au niveau de l'affichage de cette variable je suppose qu'on ne devrait pas utiliser %d
    "%d" int en décimal
    "%u" unsigned int en décimal
    "%ld" long en décimal
    "%lu" unsigned long en décimal
    [C99]
    "%lld" long long en décimal
    "%llu" unsigned long long en décimal

    Windows et sa CRT ne supportent pas C99. Par contre, les variables de type __int64 s'affichent avec "%I64d" ou "%I64u" en décimal.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 106
    Par défaut
    Merci pour vos réponses.
    J'ai trouvé ce que j'avais besoin très rapidement.

    Note du FORUM : 20/20.

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Emmanuel Delahaye :
    Une constante numérique est de type int :
    Pourtant n1124 dit :
    6.4.4.1
    5 The type of an integer constant is the first of the corresponding list in which its value can
    be represented.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Suffix DecimalConstant .....
    none      int  
              long int
              long long int
    ......

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de ddénomination d'une variable
    Par baudmail dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/04/2006, 12h52
  2. Problème d'appels d'une variable entre fonctions
    Par julien.nasser dans le forum MFC
    Réponses: 12
    Dernier message: 26/04/2006, 09h23
  3. Problème de restitution d'une variable.
    Par flyflo dans le forum C++
    Réponses: 4
    Dernier message: 22/01/2006, 15h10
  4. Réponses: 1
    Dernier message: 21/12/2005, 19h08
  5. déclaration d'une variable
    Par ouldfella dans le forum Composants VCL
    Réponses: 8
    Dernier message: 20/10/2005, 18h21

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