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;
}

Edita, compila y ejecuta el código