TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cucu 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
-
ochi: probablemente el while() se ejecute mientras networkDescriptor se distinto de 0, que si es un puntero a una estructura sea distinto a NULL.
-
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:
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
NETWORK_DESCRIPTOR *networkDescriptor = NULL;
Saludos!