Duda while!

Iniciado por Luchoz95, 5 Mayo 2013, 06:00 AM

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

Luchoz95

Gente hoy boludeando en el foro encontre este codigo ..

scanf("%s", palabra);
tam=strlen(palabra);
while(tam--){
  printf("%c",palabra[tam]);
}


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!

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

s00rk

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*!

85

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.
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

Luchoz95

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 ...

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

85

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.

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

Luchoz95