Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Luchoz95 en 5 Mayo 2013, 06:00 am



Título: Duda while!
Publicado por: Luchoz95 en 5 Mayo 2013, 06:00 am
Gente hoy boludeando en el foro encontre este codigo ..

Código
  1. scanf("%s", palabra);
  2. tam=strlen(palabra);
  3. while(tam--){
  4.  printf("%c",palabra[tam]);
  5. }

por lo que pueden ver, imprime un string al revés .. pero lo que no entiendo lo que hace while(tam--), osea while se va a gener mientras ... Que ? alguien me puede explicar ? S2!


Título: Re: Duda while!
Publicado por: engel lex en 5 Mayo 2013, 07:52 am
tam-- es la version decreciente de tam++


el va a ir a while, le resta 1 a tam, imprime el caracter de la posicion tam de palabra y luego repite hasta que tam sea 0


Título: Re: Duda while!
Publicado por: s00rk en 5 Mayo 2013, 08:41 am
Puesto que un valor positivo o neutro lo tomara como true, entonces seguira hasta llegar  a cero que segun recuerdo es tomado como falso.

Ahi pues va decrementando aunque en el while checa el valor y luego decrementa.
Solo para hacer notar que pues
tam--;
No es lo mismo que
--tam;

hehehehe saludos*!


Título: Re: Duda while!
Publicado por: 85 en 6 Mayo 2013, 22:15 pm
claro, el WHILE también comprueba una condición, de la misma forma que lo hace un IF. En este caso se comprueba el estado booleano de 'tam', que sea positivo siempre.. luego lo decrementa con el operador de post-decrementación. El tema es que el WHILE es para realizar ciclos, por lo tanto se van a cumplir los ciclos necesarios hasta que 'tam' sea 0, estado booleano conocido como 'false' o falso. Cualquier valor diferente de 0 se considera 'true' o verdadero.


Título: Re: Duda while!
Publicado por: Luchoz95 en 7 Mayo 2013, 02:09 am
todas la variables declaradas tienen estado booleano ? yo lo que no sabia es que en la condicion de while se podia realizar una funcion , en este ejemplo de decrementar el valor de tam en 1 ...


Título: Re: Duda while!
Publicado por: engel lex en 7 Mayo 2013, 02:14 am
no es que tengan un "estado booleano" es que en general se asume que 0 y "" (string vacio) son potencialmente un FALSE

y si, en el while puedes invocar una funcion siempre que retorne un valor


Título: Re: Duda while!
Publicado por: 85 en 7 Mayo 2013, 02:19 am
En ese sentido, WHILE es similar a IF, como te dije... por ejemplo en un IF podés hasta realizar una asignación de valor fijate:

int var = 0;
if( var = 1)
{
      ...
}

vos le decís 'funciones' , en realidad son 'operaciones' hechas con los operadores del lenguaje. Ya sea un operador de asignación o un operador de incremento/decremento.

las variables siempre tienen un estado booleano comprobable, porque siempre tienen un valor que puede interpretarse como verdadero si es diferente de 0, y falso si es 0.

las variables de tipo BOOL, tienen valores específicos que se dan por las palabras reservadas false y true.
Pero en realidad, es lo mismo que decir 0 y 1.

acordáte que no son funciones, son operaciones.



Título: Re: Duda while!
Publicado por: Luchoz95 en 7 Mayo 2013, 02:49 am
Muchas Gracias !