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 :

le type de retour d'une expression en c?


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Par défaut le type de retour d'une expression en c?
    bonjour a tous

    je veux afficher le type de retour d'une expression en C
    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int n = 3;
    long q = 4;
    si je mettrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("le type est :%d", n + q);
    il affiche : le type est: long.

    Est-ce que c'est possible et si oui comment?
    merci

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    C'est pas vraiment possible que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     printf("le type est :%d", n + q);
    affiche " le type est: long" , sachant que '%d' affiche un nombre et sur ton code il afficherai tout simplement 7...

  3. #3
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    bonjour.

    La taille des types est fonction de l'architecture sur laquelle est lancé le code. Un int peut être codé sur 2 ou 4 octets par exemple selon.

    Ca risque d'être un vrai casse-tête...

    [edit]
    Voila ce que ca donne chez moi sur une architecture Amd64 :

    longueur d'un char : 1
    longueur d'un short int : 2
    longueur d'un int : 4
    longueur d'un long int : 8
    longueur d'un float : 4
    longueur d'un double : 8

    Comment différencier un int d'un float par exemple ?

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est plus ou moins jouable en C++, mais je pense qu'en C tu peux oublier.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Il n'y a pas d'opérateur typeof() standard en C. Tu ne peux donc pas faire un tel code en C ISO. Tu peux éventuellement utiliser des extensions de ton compilateur : https://gcc.gnu.org/onlinedocs/gcc/Typeof.html

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Comment différencier un int d'un float par exemple ?
    Bonjour
    C'est totalement impossible. C'est d'ailleurs pour ça que c'est à toi de préciser le type attendu dans les printf/scanf. D'ailleurs printf() n'a aucun soucis pour afficher un int en %f ou un float en %d mais la valeur affichée n'a aucun rapport avec la réalité...

    Citation Envoyé par gerald3d Voir le message
    Ca risque d'être un vrai casse-tête...
    En fait même pas. Un casse-tête ne l'est que parce qu'on cherche une possibilité. Mais dès lors que l'on sait qu'il n'y en a pas, on arrête alors de chercher et on ne se casse même plus la tête
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    D'ailleurs printf() n'a aucun soucis pour afficher un int en %f ou un float en %d mais la valeur affichée n'a aucun rapport avec la réalité...
    Ce n'est pas entièrement vrai: Afficher un int en %f peut causer une SIGFPE si la valeur correspond à un Signaling NaN et que le signalement est actif...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/03/2008, 21h10
  2. [PL/SQL] type de retour d'une fonction
    Par foffffa dans le forum SQL
    Réponses: 4
    Dernier message: 27/03/2008, 15h06
  3. Réponses: 19
    Dernier message: 12/12/2007, 15h00
  4. [Oracle 9.1] Types de retour d'une fonction PL/SQL
    Par ftrifiro dans le forum PL/SQL
    Réponses: 8
    Dernier message: 12/10/2005, 16h54
  5. [type de retour dans une proc]
    Par viny dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 19/03/2005, 14h35

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