Requisitos:
Las variables tienen un "ámbito" ("scope"en inglés). El ámbito determina dónde se puede utilizar una variable y dónde no:
- Una variable no se puede utilizar antes de su declaración
- Una variable no se puede utilizar fuera de la función donde ha sido declarada (excepto las variables globales)
- Una variable solo se puede utilizar dentro de la estructura de control (if, while, función, etc) donde ha sido definida
Ejemplos de códigos incorrectos:
int main() {
if (1=1) {
int valor = 0; // declaracion de la variable valor
}
cout << valor; // "valor" solo existe dentro del if, pero ahora estamos fuera
}
int main() {
while(true) {
int variable; //declaracion de variable
cin >> variable;
if (variable >= 18) {
bool mayorEdad = true; //declaracion de mayorEdad
cout << variable;
}
if (mayorEdad) { // "mayorEdad" solo existe dentro del if anterior, aquí ya no existe
cout << "Mayor";
}
}
cout << variable; // "variable" solo existe dentro del while, aquí ya no existe
}
Un ejemplo más complejo pero más claro:
int main() {
int valor = 10;
if (true) {
int valor = 1000;
cout << valor << endl;
}
cout << valor << endl;
}
El primer cout mostrará "1000", lógico, pero el segundo mostrará "10". ¿Por qué? Por que al entrar en el if hemos declarado una NUEVA variable "valor" (1000) que al salir de if se ha destruido y nos hemos quedado solo con la primera variable "valor", que tiene todavía el valor "10", por tanto al llegar al segundo cout la variable "valor" a la que se refiere es la primera, de hecho la única que queda. En general, es muy mala idea usar dos veces el mismo nombre de variable (de hecho, si declaras la misma variable dos veces dentro de la misma estructura no te compilará).

Añadir nuevo comentario