Probleme c++

Résolu/Fermé
jeansaisrien - 23 janv. 2010 à 22:49
 jeansaisrien - 23 janv. 2010 à 23:59
Bonjour,
je suis en train d'apprendre le c++ et je ne comprend pas pourquoi ceci ne fonctionne pas :
#include <iostream>

using namespace std;

int main()
{
int age = 21;

if(age >= 18)
{
bool majeur = true;
}
else
{
bool majeur = false;
}
if(majeur)
{
cout<<"Vous etes majeur";
}
else
{
cout<<"sale jeune";
}
return 0;
}

j'ai une erreur comme quoi majeur n'existe pas donc il ne prend pas en compte sa création dans les conditions si quelqu'un pouvait m'expliquer pourquoi ce serait sympa.

merci d'avance

4 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
23 janv. 2010 à 23:37
sale jeune
Evite de mettre une telle phrase dans un forum.
if(majeur)
Oui effectivement, dans cette instruction 'majeur' n'existe pas. Où est la déclaration de 'majeur' ?
Oh, bien sûr, je t'entends fulminer: "Mais avec 'bool majeur = ...' car il passe de toutes façons dans l'un ou l'autre"; c'est vrai mais cela ne résout pas le problème.
Alors où est le problème ?
Tout simplement parce qu'une déclaration de variable faite dans un bloc ne permet de voir cette variable que dans ce bloc; en conséquence, une fois sorti de ce bloc, la variable n'existe plus.
Bonne réflexion.
0
jeansaisrien
23 janv. 2010 à 23:45
désolé pour le sale jeune,
bon j'ai compris l'histoire du bloc mais j'ai essayé de créer la variable avant en me disant qu'il la changerai avec la condition, et pourtant non ! Pourquoi ?
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
23 janv. 2010 à 23:54
Oh si, ça doit marcher.
int main()
{
  bool majeur;
  int age = 21;

  if (age >= 18)
    majeur = true;
  else
    majeur = false;

  if (majeur)
    cout << "Vous êtes majeur";
  else
    cout << "Vous êtes jeune";

  return 0;
}
Bonne continuation.
0
jeansaisrien
23 janv. 2010 à 23:59
effectivement,
mon erreur était que j'attribuai à majeur une "valeur", j'ai compris maintenant merci pour le temps que tu m'as consacré.
0