exo c++
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

exo c++



  1. #1
    Leond95

    exo c++


    ------

    Bonsoir à tous,


    Est ce que quelqu'un peut m'expliquer pourquoi dans le cas A n=20.

    merci d'avance


    Code:
    #include <iostream>
    
    using namespace std ;
    int n=10, q=2 ;
    main()
    {
    
    int fct (int) ;
    void f (void) ;
    int n=0, p=5 ;
    n = fct(p) ;
    cout << "A : dans main, n = " << n << " p = " << p
    << " q = " << q << "\n" ;
    f() ;
    }
    int fct (int p)
    {
    int q ;
    q = 2 * p + n ;
    cout << "B : dans fct, n = " << n << " p = " << p
    << " q = " << q << "\n" ;
    return q ;
    }
    void f (void)
    {
    int p = q * n ;
    cout << "C : dans f, n = " << n << " p = " << p
    << " q = " << q << "\n" ;
    }
    Résultat
    B : dans fct, n = 10 p = 5 q = 20
    A : dans main, n = 20 p = 5 q = 2
    C : dans f, n = 10 p = 20 q = 2

    -----

  2. #2
    pm42

    Re : exo c++

    Dans fct, on prend le p passé en argument donc 5, la variable n globale donc 10. On renvoie 2 * p + n donc 20.
    Dans le main, on affecte ce résultat à une variable n locale. Donc n = 20.

    C'est un exercice sur la visibilité des variables et comment les locales peuvent "cacher" les globales de même nom.

  3. #3
    Leond95

    Re : exo c++

    merci pm42

  4. #4
    champetre

    Re : exo c++

    Bonjour,

    Remarques :

    - indente ton code, et aère-le, ça devient beaucoup plus facile à lire

    - Même si certains compilateurs l'acceptent, en C on ne peut pas définir une fonction interne à une fonction (manifestement ton compilateur l'accepte : à la poubelle, OU peut-être qu'une option peut corriger ce défaut majeur).


  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : exo c++

    Citation Envoyé par champetre Voir le message
    - indente ton code, et aère-le, ça devient beaucoup plus facile à lire
    Bonne remarque. De même, mettre les bons arguments et le type de retour à main est une bonne idée.
    gcc a refusé de le compiler parce que le type de retour était absent.

    Citation Envoyé par champetre Voir le message
    - Même si certains compilateurs l'acceptent, en C on ne peut pas définir une fonction interne à une fonction (manifestement ton compilateur l'accepte : à la poubelle, OU peut-être qu'une option peut corriger ce défaut majeur).
    Je n'ai pas vu de définition de fonction dans une fonction, juste les prototypes. gcc l'a accepté mais c'est vrai que ce n'est pas une pratique courante.

  7. #6
    champetre

    Re : exo c++

    Bonjour,

    Oui, ce n'est pas courant, parce que ce n'est pas du C standard.

  8. #7
    Jack
    Modérateur

    Re : exo c++

    Pourquoi faire référence à du C?. Il est question de C++ dans ce fil.