Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Lutecio en 21 Septiembre 2013, 20:50 pm



Título: Operadores de asignación.
Publicado por: Lutecio en 21 Septiembre 2013, 20:50 pm
Hola, acabo de empezar un curso de programación en C muy básico y ya he empezado a hacer programas pequeños. Ahora estoy haciendo una prueba de escritorio a un programa que realiza la sumatoria del cuadrado de los números menores a 10 y trabajando con una variable llamada total, me surgió una duda sobre ella. La variable está declarada como total, y después para las operaciones tengo
total+=y, donde y tiene asignado el valor de 1, pero total no tiene un valor asignado antes. Para cuando una variable no tiene asignado un valor, ¿cuál toma?.

Disculpen por la poca explicación, espero haberme explicado bien. Muchas gracias.



Título: Re: Operadores de asignación.
Publicado por: rir3760 en 21 Septiembre 2013, 21:03 pm
Toda variable local (definida dentro de un bloque y sin el calificador "static") inicia con el valor indicado en su declaración, si esto se omite el valor inicial sera no definido o basura:
Código
  1. int main(void)
  2. {
  3.   int i = 7; /* valor inicial es ... */
  4.   int j;     /* valor inicial no definido o basura */
  5.  
  6.   return 0;
  7. }

Lo usual con variables utilizadas para calcular un total es inicializarlas a cero:
Código
  1. int total = 0;
  2.  
  3. /* ... */
  4.  
  5. total += y; /* Equivalente a "total = total + y" */
Ya que de no hacerlo la variable iniciaría con solo Dios sabe que valor y la expresión "total + y" no daría el resultado esperado.

Un saludo


Título: Re: Operadores de asignación.
Publicado por: z3nth10n en 21 Septiembre 2013, 21:17 pm
Buenas, @rir lo explico muy bien, pero ya que me hace ilusión pues lo explico yo también...

Básicamente, si por ejemplo decimos que y es igual a 1...

Podriamos dejar de hacer total+=y y pasar a esto: total++, básicamente ++ suma 1 a esa variable...

en caso de que sea mayor que 1, supongamos que 5, pues es recomendable hacer:

y=5
total+=y


por ejemplo:

Código
  1. int sumar() {
  2. int y=5;
  3. return total+=y;
  4. }

Cada vez que llames a sumar, en caso de que no digas que "total=0", se va a sumar 5...

También puedes hacer:

Código
  1. int sumar(int y) { //y se declara como entero en los argumentos de la funcion
  2. return total+=y;
  3. }



Retomando tu pregunta:

Para cuando una variable no tiene asignado un valor, ¿cuál toma?.

Siempre que se declare una variable entera y no se iguale a nada, siempre va a tomar el valor de 0... Si es eso lo que preguntas... :P

Un saludo.