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

SL & STL C++ Discussion :

cout {}


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut cout {}
    Bonjour,
    J'ai eu un entretien pour un boulot récemment et on m'a donné un qcm de C++ à faire. Je suis tombé sur une question bizarre, dont voici a peu près l'énnoncé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int x = 2;
    void main()
    {
     int x;
     cout << x;
     {
       int x;
       x = 3;
       cout << x;
     }
     cout << x;
    }
    enfin c'est à peu près ce que faisait le programme. et la question était de trouver l'output. mais moi je n'avais jamais vu des accolades placées comme elles le sont dans ce prog. et pour moi il y a redéfinition de x.
    Quelqu'un peut il m'expliquer
    merci

  2. #2
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    bon en fait j'ai testé moi meme et j'ai vu le résultat... mais je vois vraiment pas l'intérêt..... et ces accolades j'aime pas du tout.

  3. #3
    Membre expérimenté Avatar de Grulim
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 234
    Par défaut
    Citation Envoyé par graphicsxp
    bon en fait j'ai testé moi meme et j'ai vu le résultat... mais je vois vraiment pas l'intérêt..... et ces accolades j'aime pas du tout.
    oui, aucun intérêt
    de plus, ce style de programmation est à éviter
    les accolades sont *parfois* utiles pour des définir objets qui ne doivent pas exister 'longtemps'.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 44
    Par défaut
    La réponse c'est bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    n'importe quoi
    3
    n'importe quoi
    ?

    Car vous ne donnez pas la réponse c'est dommage

  5. #5
    Membre éprouvé Avatar de graphicsxp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    758
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2004
    Messages : 758
    Par défaut
    oui c bien la réponse

  6. #6
    HRS
    HRS est déconnecté
    Membre chevronné
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Par défaut
    l'énoncé est mal construit, il aurait dû être ceci
    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
     
    #include <iostream>
    using namespace std;
    int x = 1; //x1
    void affiche ();
    int main()
    {
     int x = 2; //x2 masque x1
     cout << x << endl;
     // début de block
     {
       int x; //x3 masque x2
       x = 3;
       cout << x << endl;
     }
     // fin de block
     cout << x << endl; // x2 réapparait
     affiche (); // x1 apparait
     cin.ignore();
     return 0;
    }
    void affiche () {
        cout << x << endl;
    }
    il explique le concept de visibilité et de masquage de la variable x
    déclarée à 3 niveaux différents

  7. #7
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Tu peux nous donner lenom de l'entreprise , si il suffit de ça pour programmer en c++ dans une boite j'accours

    C'est vraiment trés trés basique , il y avait que ça comme question ?

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Pas redéfinition. Masquage.

    Des blocs, il peut y en avoir suite à des structures de contrôles (while, if, ...). On peut en oublier de la sorte. Et pire que tout on peut masquer (mauvais copier-coller, code patché à la va-vite) une variable et l'oublier après. Résultat on a des erreurs que tout le monde ne sait peut-etre pas reconnaitre au premier coup d'oeil.

    Ici, il est vrai que c'est le B.A.ba. Peut-être ont-ils eu des stagiaires/employés qui leur ont fait perdre du temps avec des idioties dans le genre. Qui sait.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Par défaut
    Citation Envoyé par Grulim
    Citation Envoyé par graphicsxp
    bon en fait j'ai testé moi meme et j'ai vu le résultat... mais je vois vraiment pas l'intérêt..... et ces accolades j'aime pas du tout.
    oui, aucun intérêt
    de plus, ce style de programmation est à éviter
    les accolades sont *parfois* utiles pour des définir objets qui ne doivent pas exister 'longtemps'.
    Les accolades sont un héritage du C. Il faut savoir qu'en C il faut déclarer les variables en début de bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void f( void )
    {
          int var;
          char c;
          /* .. */
    }
    Il est interdit de faire :

    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
     
    void f( void )
    {
          int max;
     
          max = 5;
     
           /*
           ** code
           */
           int i = 0;
           for(; i < max; i++)
           {
                /*
                ** code
                */
            }
    }
    Pour pallier à ce problème et ne pas devoir toujours déclarer des variables comme 'int i' en début de bloc on fait :
    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
     
    void f( void )
    {
          int max;
     
          max = 5;
     
           /*
           ** code
           */
           {
                int i;
                for(i = 0; i < max; i++)
                {
                     /*
                     ** code
                     */
                 }
             }
    }
    Voilà, il est cependant à noté que la norme C99 permet la déclaration de variables n'importe où dans un bloc, comme en C++.

  10. #10
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    ... et qu'en C++ il est chaudemet recommandé de ne pas déclarer et construire une variable avant qu'on en ait besoin.

    Quand on programme sainement (pas de fonctions qui s'éternisent au delà de 20 lignes), la critique des blocs n'a pas un intérêt transcendental.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. "cout <<" dans une application fenêtrée.
    Par Crisanar dans le forum MFC
    Réponses: 8
    Dernier message: 19/09/2005, 15h43
  2. Affichage de l'adresse d'une chaine avec cout
    Par thierryguilbert dans le forum SL & STL
    Réponses: 4
    Dernier message: 14/03/2005, 16h04
  3. cout dans une winmain
    Par buzzz dans le forum C++Builder
    Réponses: 1
    Dernier message: 26/01/2005, 06h02
  4. Processus d'écoute et ScrollBar
    Par liv dans le forum MFC
    Réponses: 9
    Dernier message: 27/09/2004, 09h27
  5. STL cin, cout ...
    Par oxor3 dans le forum SL & STL
    Réponses: 11
    Dernier message: 29/08/2004, 16h22

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