elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda while!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda while!  (Leído 2,476 veces)
Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Duda while!
« 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!


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda while!
« Respuesta #1 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


En línea

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

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Duda while!
« Respuesta #2 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*!
En línea

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Duda while!
« Respuesta #3 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.
En línea

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

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Duda while!
« Respuesta #4 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 ...
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda while!
« Respuesta #5 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
En línea

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

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Duda while!
« Respuesta #6 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.

En línea

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

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Duda while!
« Respuesta #7 en: 7 Mayo 2013, 02:49 am »

Muchas Gracias !
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,706 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda duda y duda de Metasploit
Bugs y Exploits
huber_nomas 4 5,739 Último mensaje 17 Febrero 2012, 14:00 pm
por MauroMasciar
Duda
Programación C/C++
djdac3 3 1,890 Último mensaje 16 Septiembre 2012, 03:08 am
por avesudra
DUda c++
Programación C/C++
Stakewinner00 4 2,505 Último mensaje 18 Septiembre 2012, 15:09 pm
por Stakewinner00
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines