Autor Tema: bucle while  (Leído 1523 veces)

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

Desconectado cucu

  • PIC12
  • **
  • Mensajes: 74
bucle while
« en: 31 de Octubre de 2008, 10:32:05 »
hola, tengo una duda relacionada con el bucle while

tengo un programa de microchip en C18 ya hecho que estoy modificando, mi problema está en que llama a un bucle while que tiene dentro una estructura, es algo así:

typedef struct _NETWORK_DESCRIPTOR
{
    PAN_ADDR    PanID;
    BYTE        LogicalChannel;
    BYTE        StackProfile    : 4;
    BYTE        ZigBeeVersion   : 4;
    BYTE        BeaconOrder     : 4;
    BYTE        SuperframeOrder : 4;
    BYTE        PermitJoining   : 1;
    //BYTE        SecurityLevel   : 3; no longer in beacon payload, so we can't get this
    struct _NETWORK_DESCRIPTOR *next;
} NETWORK_DESCRIPTOR;


luego, en otro sitio hace:

NETWORK_DESCRIPTOR *networkDescriptor;

while(networkDescriptor){
   //lo que hace

}

mi duda es, ¿que quiere decir eso? ¿cuando se hace verdadera esa condición?

Gracias

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: bucle while
« Respuesta #1 en: 31 de Octubre de 2008, 12:23:46 »
ochi: probablemente el while() se ejecute mientras networkDescriptor se distinto de 0, que si es un puntero a una estructura sea distinto a NULL.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: bucle while
« Respuesta #2 en: 31 de Octubre de 2008, 13:13:17 »
Tal cual lo explica RedPic. Una estructura condicional, ya sea if, for o while, recibe como argumento un valor de verdad, q puede ser 0, o distinto de 0. Los comparadores < > = y != hacen eso, devuelven 0 o distinto de 0.
Por lo tanto, si tenes:

Código: [Seleccionar]
while(networkDescriptor)
{
   //lo que hace
}

Sera verdadero en el caso de q "networdDescriptor" sea distinto de 0, y como es un puntero, el while se ejecuta solo si "networkDescriptor" esta apuntando a algun lado. Por este mismo motivo tendrias q inicializar el puntero con null, cosa de q no quede basura
Código: [Seleccionar]
NETWORK_DESCRIPTOR *networkDescriptor = NULL;
Saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein


 

anything