[Duda C] Ayuda a comprender un código.

Iniciado por josevc, 3 Noviembre 2012, 18:25 PM

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

josevc

Buenas, tengo el siguiente código, el cual calcula el factorial de un número:

Citar#include <stdio.h>

int main(){

int num,copianum;
long unsigned fact=1;


do{
puts("Introduce numero");
scanf("%d",&num);
}while(num<0);

copianum=num;
while(num>1)
fact*= num--;


printf("El factorial de %d es %lu\n",copianum,fact);
system("pause");
return 0;
}


Estoy tratando de descifrar como funciona, pero es esto lo que no comprendo del todo:

Citar
while(num>1)
fact*= num--;

num--, ¿Es igual a num-1 ?

Pense que sería lo mismo poner:

fact=fact*(num-1)

Pero al sustituirlo el programa no funciona, entonces estoy algo perdido, ¿como se interpreta: fact*=num-- ?

Espero vuestra ayuda,

Muchas gracias.






xiruko

while (num>1) fact*=num--;

esto es equivalente a esto otro:

while (num>1) {
    fact=fact*num;
    num--; // num=num-1;
}


un saludo!

Stakewinner00

#2

while (num>1) fact*=num--;

tambien es equivalente a

Citarwhile(num>1) {

fact = fact * num;
num = num -1;
}

josevc

Muchas gracias por vuestras respuestas, y rapidez.