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 :

Manipulation des variables.


Sujet :

C

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    172
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 172
    Par d�faut Manipulation des variables.
    Bonjour,

    Je commence � apprendre � programmer en C et je ne comprend pas quel type de variable je dois choisir.

    Par exemple je voudrais stocker un tr�s grand nombre d�cimal dans une variable pour l'afficher ult�rieurement � l'�cran, par exemple "255125125125125125125125255".

    J'ai essayer avec int, long int, long long int, mais � chaque fois que j'essais d'afficher le nombre, il ne correspond pas au nombre initial.

    Quelle est la solution ?

    Merci.

  2. #2
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    29
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 29
    Par d�faut
    bonjour

    si tu veux stocker un decimal, tu peux utiliser un float(4octets), sinon essaye le double(8 octets) ou le long double(12octets)

  3. #3
    Expert confirm�

    Inscrit en
    Ao�t 2006
    Messages
    3 967
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2006
    Messages : 3 967
    Par d�faut
    Hao
    Citation Envoy� par gwendy
    bonjour

    si tu veux stocker un decimal, tu peux utiliser un float(4octets), sinon essaye le double(8 octets) ou le long double(12octets)
    Dans gcc, les long double occupent effectivement 12 octets, mais n'en utilisent que 10, les 2 octets de poids fort �tant toujours � 0, les 10 autres �tant au format de la repr�sentation 80 bits des fpu Intel.


    fred61 en C standard, il n'y a pas de type permettant de stocker des valeurs de n'importe quelle pr�cision.

    Il y a des librairies qui le permettent, mais si tu es d�butant, je sugg�re que tu apprennes d'abord le langage

  4. #4
    Membre averti
    �tudiant
    Inscrit en
    Mars 2007
    Messages
    48
    D�tails du profil
    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 48
    Par d�faut
    Citation Envoy� par fred61
    "255125125125125125125125255".

    Quelle est la solution ?

    Merci.
    les types des variables en c sont :

    type domaine
    int d�pend de la machine
    unsigned int d�pend de la machine
    short [-32768,32767]
    unsigned short [0,65535]
    long [-2^(31),2^(31-1)]
    unsigned long [0,2^(32-1)]
    float [-3.4*10^38,3.4*10^38]
    double [-1.7*10^308,1.7*10^308]
    long double [-3.4*10^4932,3.4*10^4932]


    et a toi de choisir le convenable.

  5. #5
    R�dacteur
    Avatar de Franck.H
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par d�faut
    Citation Envoy� par k.cheker
    les types des variables en c sont :

    type domaine
    int d�pend de la machine
    unsigned int d�pend de la machine
    short [-32768,32767]
    unsigned short [0,65535]
    long [-2^(31),2^(31-1)]
    unsigned long [0,2^(32-1)]
    float [-3.4*10^38,3.4*10^38]
    double [-1.7*10^308,1.7*10^308]
    long double [-3.4*10^4932,3.4*10^4932]


    et a toi de choisir le convenable.
    Cela ne d�pend pas du C (pour la taille de chaque variable) mais de l'impl�mentation et du mat�riel. Ces donn�es peuvent varier par exemple sur un Mac, ou Amiga, Risk, etc...
    Mon Site
    Ma biblioth�que de gestion des cha�nes de caract�res en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne r�pond � aucune question technique par MP, merci d'avance !

  6. #6
    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 fred61
    Je commence � apprendre � programmer en C et je ne comprend pas quel type de variable je dois choisir.

    Par exemple je voudrais stocker un tr�s grand nombre d�cimal dans une variable pour l'afficher ult�rieurement � l'�cran, par exemple "255125125125125125125125255".

    J'ai essayer avec int, long int, long long int, mais � chaque fois que j'essais d'afficher le nombre, il ne correspond pas au nombre initial.
    Les types ont des limites (les minimas sont impos�s par la norme) :

    http://emmanuel-delahaye.developpez.com/init_c.htm#type

    Pour les valeurs plus grandes, tu peux utiliser les r�els, mais tu perds en pr�cision.

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    172
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 172
    Par d�faut
    Merci pour vos r�ponses, en fait je demande �a car je voulais m'entrainer � manipuler les diff�rents types de variables en fesant une sorte de petite calculatrice, et je ne comprend pas quel type de variable utilise par exemple la calculatrice de windows, qui peux calculer des entiers comportant jusqu'� 32 chiffres.

    et en lisant les diff�rentes FAQ et cours je ne vois aucun type pouvant faire �a.

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    172
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 172
    Par d�faut
    Petit exemple le programme ci-dessous :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
        unsigned long long  i  ;
        i = 999999999999 ;
     
        printf("Resultat : %llu\n\n", i) ;
     
     
        system("pause") ;
    	return 0;
    }
    Lorsque je l'ex�cute, il m'affiche 3567587327 au lieu de 999999999999.

    Je ne comprend pas ?

  9. #9
    Expert confirm�

    Inscrit en
    Ao�t 2006
    Messages
    3 967
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2006
    Messages : 3 967
    Par d�faut
    Hao,

    Quelle machine ?
    Quel OS ?
    Quel compilateur ?

  10. #10
    gl
    gl est d�connect�
    R�dacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 46
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par d�faut
    Citation Envoy� par fred61
    Merci pour vos r�ponses, en fait je demande �a car je voulais m'entrainer � manipuler les diff�rents types de variables en fesant une sorte de petite calculatrice, et je ne comprend pas quel type de variable utilise par exemple la calculatrice de windows, qui peux calculer des entiers comportant jusqu'� 32 chiffres.

    et en lisant les diff�rentes FAQ et cours je ne vois aucun type pouvant faire �a.
    Comme il te l'a deja ete signale, il n'existe pas de type en C a precision infinie. Pour realiser de tels calculs il faut s'orienter vers des bibliotheques specialisees ou en faire une toi meme.

    Generalement le principe utilisee pour effectuer de tels traitement est l'utilisation de tableau pour contenir les nombres et creations des fonctions arithmetiques travaillant sur ces tableaux et propageant les retenus.

  11. #11
    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 fred61
    Petit exemple le programme ci-dessous :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
        unsigned long long  i  ;
        i = 999999999999 ;
     
        printf("Resultat : %llu\n\n", i) ;
     
     
        system("pause") ;
    	return 0;
    }
    Lorsque je l'ex�cute, il m'affiche 3567587327 au lieu de 999999999999.

    Je ne comprend pas ?
    C'est parce que la biblioth�que C de Windows (msvcrt.dll) n'est pas compatible avec C99. Il faut ruser.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifdef WIN32
    #define LL "I64"
    #else
    #define LL "ll"
    #endif
     
    ...
     
        printf("Resultat : %"LL"u\n\n", i) ;

  12. #12
    Expert confirm�

    Inscrit en
    Ao�t 2006
    Messages
    3 967
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2006
    Messages : 3 967
    Par d�faut
    Lax,
    Citation Envoy� par Emmanuel Delahaye
    C'est parce que la biblioth�que C de Windows (msvcrt.dll) n'est pas compatible avec C99. Il faut ruser.
    Avec Visual Studio 2005, le code de fred61 fonctionne parfaitement. Mais peut-�tre que l'installation ds VS2005 met � jour la dll ?

    Mais si c'est �a, alors pourquoi le m�me code, sur la m�me machine, mais avec Code::Blocks et Mingw ne marche pas ?

    Il semble plut�t qu GCC, donc mingw, ait des probl�mes avec le formatage ll ou llu. C'est en tout cas ce que disent la majorit� des r�ponses que j'obtiens avec Google.

  13. #13
    Membre confirm�
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    172
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 172
    Par d�faut
    Je suis sous windows XP et j'utilise Dev C++.

    J'ai essay� la solution d'Emmanuel et �a fonctionne tr�s bien (m�me si j'ai rien compris), je trouve �a un peu tordu quand m�me de devoir faire ce genre de manip pour un programme aussi simple, mais bon...

    Merci.

Discussions similaires

  1. Formater et manipuler des variables binaires
    Par lcoulon dans le forum D�buter
    R�ponses: 7
    Dernier message: 29/10/2011, 18h35
  2. Manipulation des variables
    Par dgwabo dans le forum Dev-C++
    R�ponses: 1
    Dernier message: 30/03/2011, 09h00
  3. Manipulation des variables de callback
    Par Warno dans le forum jQuery
    R�ponses: 3
    Dernier message: 24/02/2010, 09h53
  4. Manipuler des variables/valeurs
    Par ttone dans le forum Langage
    R�ponses: 3
    Dernier message: 18/03/2008, 17h13

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