Sentencias de definición, inicialización y asignación¶
Las sentencias de definición introducen nuevas variables en el ámbito
en el que son declaradas, es decir, el conjunto de sentencias situadas entre
llaves { }
.
{
// código
int x;
// código
}
Nótese en el ejemplo que, tras la definición, el valor de la variable x
es indefinido.
Por ello, siempre que sea posible, es conveniente definir e inicializar en el mismo paso.
{
// código
int x = 0;
int y{};
double z{};
// código
}
Nota
Recordad que con la inicialización uniforme la variable y
se inicializa automáticamente 0
y la z
a 0.0
.
Las sentencias de asignación evalúan la expresión situada a la derecha del operador =
y asignan el resultado a la variable situada a la izquierda.
x = 2*y;
Nótese en todos estos tipos de sentencias simples la finalización con el
signo de puntuación ;
.
¿Dónde realizar las sentencias de definición e inicialización?¶
C++ usa tipado estático lo que, entre otras cosas, implica que una variable tiene que estar declarada antes de poder utilizarla en una expresión.
Para el caso de variables correspondientes a tipos nativos, no existe una restricción respecto al lugar en un programa donde realizar las sentencias de definición e inicialización de variables.
Sin embargo, por legibilidad y eficiencia lo lógico es hacerlo lo más cerca posible de la primera expresión en la que vayan a ser utilizadas las variables.
Damos información contextual a las líneas siguientes, como por ejemplo, el tipo de dato involucrado en una operación.
Podemos estar seguros que esa variable no afecta al programa aguas arriba.
Es más difícil que olvidemos inicializarla, pues la vamos a usar de forma inmediata.
El siguiente ejemplo ilustra la idea anterior. No obstante, al compilar genera un error. ¡Corrígelo!
#include <iostream>
using namespace std;
int main()
{
// Tropecientas líneas más abajo
cout << "Dame un número: ";
int x;
cin >> x;
// Tropecientas líneas más abajo
cout << "Dame otro número: ";
cin >> y;
int y;
cout << "La suma es: " << x + y << endl;
}