Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: josevc en 3 Noviembre 2012, 18:25 pm



Título: [Duda C] Ayuda a comprender un código.
Publicado por: josevc en 3 Noviembre 2012, 18:25 pm
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.







Título: Re: [Duda C] Ayuda a comprender un código.
Publicado por: xiruko en 3 Noviembre 2012, 18:34 pm
Código
  1. while (num>1) fact*=num--;

esto es equivalente a esto otro:

Código
  1. while (num>1) {
  2.     fact=fact*num;
  3.     num--; // num=num-1;
  4. }

un saludo!


Título: Re: [Duda C] Ayuda a comprender un código.
Publicado por: Stakewinner00 en 3 Noviembre 2012, 18:37 pm

Código
  1. while (num>1) fact*=num--;

tambien es equivalente a

Citar
while(num>1) {

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


Título: Re: [Duda C] Ayuda a comprender un código.
Publicado por: josevc en 3 Noviembre 2012, 18:41 pm
Muchas gracias por vuestras respuestas, y rapidez.