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 alterne (Probl�me de compr�hension)


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2017
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2017
    Messages : 67
    Par d�faut Fonction alterne (Probl�me de compr�hension)
    Bonsoir je d�bute dans le c++ et je vois actuellement les fonctions , dans mon livre Programmer en langage c++ de Claude delannoy il y � un code qui est le suivant :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <iostream>
     
    using namespace std;
     
    int & alterne(int &, int &);
     
    int main()
    {
    int n = 1, p = 3, q = 5;
     
       alterne(n,p) = 8;
       cout <<" n = " << n <<" p = " << p << endl;
       alterne(p,q) = 12;
       cout <<" p = " << p <<" q = " << q <<endl;
     
    }
     
    int & alterne (int & n1, int & n2)
    {
    static bool indic = true;
     
       if (indic)
       {
            indic = false;
            return n1;
       }
       else
       {
           indic = true;
           return n2;
       }
    }
    Et le r�sultat donner je n'arrive pas � le comprendre : n = 8 p = 3 et p = 3 q = 12
    Mais pour moi selon ma compr�hension j'arrive � un r�sultat diff�rent qui est le suivant : n = 8 p = 3 et p = 12 et q = 5 or ce n'est pas juste mais je n'arrive pas � comprendre comment il arrive au premier r�sultat que je vous ait donner ici.

    Pouvez vous svp m'aider � comprendre pourquoi il met p = 3 et q = 12 dans l'appel de la deuxi�me fonction ?

    Je vous remercie d'avance et vous souhaite une excellente soir�e / journ�e.

    Aigle-Royal

  2. #2
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Mis � part que ce code est abusivement tordu, je ne vois pas bien ce qu'il y a de compliqu� � lire.
    Le premier appel retourne n et le second appel retourne q. Ensuite, ben tu as une assignation..
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  3. #3
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut
    Ce que tu ne sembles pas comprendre c'est la notion static

    L'initialisation se fait que la premi�re fois qu'on utilise la variable indic. Mais la variable �tant statique dans un bloc (une fonction ici), elle reste en m�moire.
    Donc
    1. premier appel : cr�ation de la variable indic, initialisation � true. Ensuite le test est vrai, on met la variable � false et on retourne n1
    2. deuxi�me appel : variable indic existe toujours et vaut false. Ensuite le test est faux, on met la variable � true et on retourne n2
    3. troisi�me appel (que tu peux tester) : variable indic existe toujours et vaut true. Ensuite le test est vrai, on met la variable � false et on retourne n1


    Le mieux pour comprendre la notion static c'est avec un compteur ... qui est plus parlant qu'une alternance.

  4. #4
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2017
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mars 2017
    Messages : 67
    Par d�faut R�ponse au message � Foetus
    Bonjour Foetus

    Merci vous m'avez �clairer c'est en effet la notion de static que je n'avais pas compris, mais suite � votre
    retour j'ai compris maintenant le code et ce que static produit.

    Je vous remercie encore une fois bonne journ�e � vous.

    Aigle-Royal

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 8
    Dernier message: 19/04/2013, 16h23
  2. R�ponses: 10
    Dernier message: 26/11/2012, 10h45
  3. probl�me de compr�hension d'une fonction
    Par anas_matlab dans le forum MATLAB
    R�ponses: 2
    Dernier message: 26/05/2011, 12h52
  4. onclipevent (probl�me de compr�hension)
    Par stephane eyskens dans le forum Flash
    R�ponses: 8
    Dernier message: 24/09/2003, 15h09
  5. Probl�me de compr�hension des ensembles
    Par Cornell dans le forum Langage
    R�ponses: 6
    Dernier message: 07/02/2003, 22h07

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