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
    Candidat au 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
    Points : 4
    Points
    4
    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 éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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 225
    Points : 10 174
    Points
    10 174
    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 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 2 296
    Points : 4 949
    Points
    4 949
    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 sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    C'est plus ou moins jouable en C++, mais je pense qu'en C tu peux oublier.

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 681
    Points
    13 681
    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
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    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 721
    Points : 31 044
    Points
    31 044
    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

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    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...

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