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 :

Fonction de type int mais valeur de retour de type différent


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut Fonction de type int mais valeur de retour de type différent
    Bonjour à tous,

    Pourquoi certaines fonctions sont de type différentes par rapport à leur valeur de retour.

    Exemple:
    ---------
    la fonction printf() est de type int , or il nous est possible de lui faire retourner la valeur de notre choix.

    double x = 1234,456 ;

    printf("", x); <== la fonction retourne une valeur de type double.


    Pourquoi?

  2. #2
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,
    tu confonds valeur de retour et paramètres. Pour reprendre ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double x=1234.456;
    int valeur_de_retour;
     
    valeur_de_retour=printf("%lf\n", x);
    Un man printf te renseigne sur le type et la signification de cette valeur de retour :
    PRINTF(3) Linux Programmer's Manual PRINTF(3)

    NAME
    printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vdprintf, vsprintf, vsnprintf - formatted out‐
    put conversion

    SYNOPSIS
    #include <stdio.h>

    int printf(const char *format, ...);

    ........

    RETURN VALUE
    Upon successful return, these functions return the number of characters printed (excluding the null byte used
    to end output to strings).
    Si tu essayes le programme, il affichera 1234.456000 soit 12 «caractères/octets» donc la valeur de retour sera égale à 12.

  3. #3
    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
    Je ne comprends pas ce que tu veux dire.
    printf() retourne toujours un nombre entier, le nombre de caractères écrits.
    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.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut
    merci picodev j'ai compris le principe mais je manque d'automatisme sur mes recherches encore , sa viendra LOL;


    Pour te repondre medicov , je ne comprenais pas pourquoi la fonction printf() qui est de type int pouvait retourné des valeurs de tous les types car on peut très bien imprimer des int double float char etc.... avec cette fonction , or cette dernière a la base est de type int.


    En réalité , comme picodev ma fait part , j'ai confondu paramètres et valeur de retour.

  5. #5
    Membre éclairé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    70
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 70
    Par défaut
    très bien imprimer des int double float char etc.... avec cette fonction
    Tu viens de le dire, tu "imprimes" mais tu ne retourne pas...

    Le mieux est encore de le tester !
    http://codepad.org/SlDVaNwf

Discussions similaires

  1. [10g] Fonction stockée et table comme valeur de retour
    Par quaterbac dans le forum PL/SQL
    Réponses: 4
    Dernier message: 06/05/2014, 15h17
  2. [ZF 1.10] Clause where qui fonctionne avec type int mais pas avec type String
    Par shadypierre dans le forum Zend_Db
    Réponses: 5
    Dernier message: 30/04/2010, 13h00
  3. Appel de fonctions et récupération de la valeur de retour
    Par Mickael Baron dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/01/2009, 13h57
  4. Réponses: 1
    Dernier message: 16/03/2007, 11h46
  5. Réponses: 5
    Dernier message: 12/10/2006, 13h49

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