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 #define


Sujet :

C++

  1. #21
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    ah ok....
    mais normalement le type du résultat d'un calcul ne dépend t'il pas du type du premier chiffre?
    Je suppose que tu veux dire nombre plutôt que chiffre. Non, il y a des promotions pour déterminer quelque chose de commun. Dans te exemples:

    int*double + float +... ne donne pas un résultat en int?
    double
    double *int+flaot +... ne donne pas un résultat en double?
    exact, mais parce que c'est le type le plus "haut" qui apparait; pas parce que c'est le premier.

    (Où les règles de promotion sont plus compliquées, c'est quand des unsigned et des signed apparaissent dans l'expression).

    pour les inline, l'optimsation ne le fera t'il pas tout seule?
    Tu ne peux pas avoir plusieurs définitions pour la même fonction sauf si elles sont toutes inline. Le fait que les fonctions inline pour le C++ sont généralement générée en ligne par les compilateurs mais qu'ils se permettent aussi de générer d'autres fonctions en ligne n'intervient pas dans la conformité du programme.

  2. #22
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    ok, merci

  3. #23
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    es que tu connait une doc ou un tuto quiexplique les promotions?

  4. #24
    Membre à l'essai
    Inscrit en
    Novembre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    J'ai remodifié mon fichier bernstein.h.

    Merci à tous pour vos éclaircissements.

    Lionel

  5. #25
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    es que tu connait une doc ou un tuto quiexplique les promotions?
    - si une des deux opérandes est un long double, l'autre est convertie en long double
    - si une des deux opérandes est un double, l'autre est convertie en double
    - si une des deux opérandes est un float, l'autre est convertie en float
    - les deux opérandes sont modifiées (indépendamment) comme suit:
    - si c'est un wchart_t ou un enum, l'opérande est convertie dans le premier type qui peut représenter toutes les valeurs dans la liste int, unsigned, long, unsigned long.
    - si c'est un char, signed char, unsigned char, short, unsigned short: si int peut représenter toutes les valeurs du type de l'opérande, elle est convertie en int, sinon elle est convertie en unsigned int
    - sinon, l'opérande n'est pas modifiée
    - si une des deux opérandes est unsigned long, l'autre est convertie en unsigned long
    - si une des deux opérandes est un long et l'autre unsigned, alors
    - si long peut représenter toutes les valeurs d'unsigned, l'unsigned est converti en long
    - sinon, les deux sont converties en unsigned long
    - si une des deux opérandes est un long, l'autre est convertie en long
    - si une des deux opérandes est un unsigned, l'autre est convertie en unsigned
    - sinon, les deux opérandes sont des int

    Je suppose que le type des littéraux t'intéresse aussi. Pour les entiers:
    - décimal sans suffixe: premier de int, long qui est capable de représenter la valeur
    - octal ou hexadécimal sans suffixe: premier de int, unsigned, long, unsigned long qui est capable de représenter la valeur
    - suffixe de U: premier de unsigned, unsigned long qui est capable de représenter la valeur
    - suffixe de L: premier de long, unsigned long qui est capable de représenter la valeur
    - suffixe de UL: unsigned long

    Les flottants sont des doubles sauf avec un suffixe F (float) ou L (long double).

    Si j'ai bonne mémoire, les choses sont les mêmes en C90, différentes en C99 (introduction de long long et possibilité de types supplémentaires), et seront différentes en C0X (les mêmes règles que C99 me semble-t'il mais j'ai pas vérifié).

  6. #26
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    puif.
    Un grand merci
    faut que je relise cela tranquillement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Langage/Algorithme] [CodeGuard]Thread et DLL : problème de #define
    Par ShaiLeTroll dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/12/2011, 10h12
  2. problème macro #define
    Par Stobbyo dans le forum Débuter
    Réponses: 3
    Dernier message: 09/03/2011, 09h28
  3. Réponses: 2
    Dernier message: 23/07/2010, 20h40
  4. [XSL] Problème "Entity not defined"
    Par FreeCake dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/04/2006, 21h36
  5. D6: Problème de $DEFINE $IFDEF
    Par david_chardonnet dans le forum Langage
    Réponses: 6
    Dernier message: 22/02/2006, 16h27

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