Probleme c++

Résolu
jeansaisrien -  
 jeansaisrien -
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   Statut Membre Dernière intervention   148
 
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
 
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   Statut Membre Dernière intervention   148
 
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
 
effectivement,
mon erreur était que j'attribuai à majeur une "valeur", j'ai compris maintenant merci pour le temps que tu m'as consacré.
0