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 :

probleme avec les macros


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut probleme avec les macros
    bonjour je suis en train de reviser les macos

    j ai tombé sur un exo qui me demande d écrire deux macro MAX ET MIN qui étant donné un type "entier" donne respectivement la plus grande et la plus petite valeur dy type . par exemple MAX(char) vaut 127 et MIN(unsigned char) vaut 0

    merci pour votre aide

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    En gros tu veux qu'on te donne la correction de l'exercice?
    Si c'est un exercice, la solution devrait se trouver dans ton cours non?

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    J'ai de gros doute qu'ils trouve une solution où que ce soit... Il n'existe à ma connaissance aucun moyen de distinguer un entier signé d'un entier non signé ...

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    c'est le préprocesseur qui interprète le code donc à ce niveau là, ce devrait être possible logiquement.

    typeof renvois le type de la variable il me semble donc on devrait avoir la distinction signé, non signé.
    -> Simple recherche sur google quand même.

  5. #5
    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
    Citation Envoyé par Neckara Voir le message
    c'est le préprocesseur qui interprète le code donc à ce niveau là, ce devrait être possible logiquement.

    typeof renvois le type de la variable il me semble donc on devrait avoir la distinction signé, non signé.
    -> Simple recherche sur google quand même.
    typeof est du C++, pas du C

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Citation Envoyé par diogene Voir le message
    typeof est du C++, pas du C
    A jongler entre forums c et c++... pardonnez moi

  7. #7
    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
    Je ne pense pas que cela soit possible au moins sous cette forme.

    Par contre, les valeurs maximum et minimum des entiers sont listés dans <limits.h> sous la forme t_MAX et t_MIN, avec pour le radical t :

    - SCHAR, CHAR, SHRT, INT, LONG, LLONG complété par _MAX ou _MIN pour les types signed char, char, short, int, long, long long

    - UCHAR, USHRT, UINT, ULONG, ULLONG complété par _MAX pour les types unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long (il n'y a pas de _MIN pour les types entiers non signés, la valeur est toujours 0)

    On peut créer les macro sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #define UCHAR_MIN 0
    #define USHRT_MIN 0
    #define UINT_MIN  0
    // etc ....
    #define VALMAX(type) type##_MAX
    #define VALMIN(type) type##_MIN
    avec pour type CHAR, SCHAR, UCHAR, SHRT, USHRT,.... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int i = VALMAX(UCHAR);
    int j = VALMIN(UCHAR);

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 474
    Par défaut
    Citation Envoyé par valefor Voir le message
    J'ai de gros doute qu'ils trouve une solution où que ce soit... Il n'existe à ma connaissance aucun moyen de distinguer un entier signé d'un entier non signé ...
    Bien sûr que si. Il suffit de vérifier si « (type)0 » est supérieur à « (type)-1 ». Si ce n'est pas le cas, c'est que « -1 » a été transtypé en type non signé. Et de là, ce « -1 » converti est égal à « ~0 » et est forcément la valeur la plus haute. Dans l'autre cas, il suffit de décaler cette valeur d'un bit vers la droite (en introduisant un bit à zéro à gauche, donc).

  9. #9
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    « (type)0 » est supérieur à « (type)-1 »
    Ben je me coucherai moins bête

Discussions similaires

  1. problemes avec les tableaux et macros
    Par Aniss00 dans le forum C
    Réponses: 4
    Dernier message: 15/10/2014, 19h53
  2. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  3. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  4. Problem avec les *.AVI sur les panels
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/08/2003, 22h50
  5. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18

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