Operadores de asignación.

Iniciado por Lutecio, 21 Septiembre 2013, 20:50 PM

0 Miembros y 1 Visitante están viendo este tema.

Lutecio

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.


rir3760

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:
int main(void)
{
   int i = 7; /* valor inicial es ... */
   int j;     /* valor inicial no definido o basura */

   return 0;
}


Lo usual con variables utilizadas para calcular un total es inicializarlas a cero:
int total = 0;

/* ... */

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

z3nth10n

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:

int sumar() {
int y=5;
return total+=y;
}


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

También puedes hacer:

int sumar(int y) { //y se declara como entero en los argumentos de la funcion
return total+=y;
}





Retomando tu pregunta:

Cita de: Lutecio en 21 Septiembre 2013, 20:50 PM
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.

Interesados hablad por Discord.