Red de conocimientos sobre prescripción popular - Colección de remedios caseros - ¿Por qué este tipo de operación AND bit a bit siempre informa un error?

¿Por qué este tipo de operación AND bit a bit siempre informa un error?

Respuesta adicional:

Esto se compila y ejecuta usando Win-TC. Si no se compila, es posible que deba modificarlo para su compilador. Si los resultados de salida son incorrectos, debe ajustar los valores en la tabla [4].

-

No sé por qué se usan cadenas, pero se usa 16.

0 es diferente de "0".

0 amp1=1

0 'amp1' = 0x 30 amp 0x 31 = 00110000. 00110001 = 0000001 no es igual a '1' * * * * * * *< /p >

Además, las operaciones AND no pueden operar directamente en matrices y cadenas.

-

# incluir ltstdio.h gt

# incluir ltstring.h gt

main()

{

Tabla de estructura

{

Destino largo sin firmar

Máscara larga sin firmar;

Puerta larga sin firmar ;

Tipo entero largo sin signo;

};

Pestaña de tabla de estructura[4]={

{ 0xcb4acd00, 0xffffffff, 0xcb4acd01 , 0xcb4acd01},

{0xcb4ace00, 0xffffffff, 0xcb4ace01, 0xcb4ace01},

{0xcb4acf00, 0xffffffff, 0xcb4acf01, 0xcb4acf 01},

{0xcb4ad000, 0xffffffff , 0xcb4ace02, 0x CB 4 ace 01 } };

i1, i2, i3, i4 largos sin firmar;

IP largos sin firmar;

p>

int I;

int m;

char IP _ str[33]= { 0 };

printf("Ingrese la dirección IP del propósito: ");

scanf("s", IP_str);

sscanf(ip_str, "d.d.d.d", ampi1, ampi2, ampi3 y ampi4);

p>

IP =(I 1 lt; lt24) (I2 lt; lt16) (i3 lt; lt8) i4

for(m = 0; m lt=3; m )

if (ip amp tab[m].Mask==tab[m].target)

printf("Los datos IP deben ir a ip:d.d.d.d\n",

p>

pestaña[m].int amp0xff000000 gt gt24,

pestaña[m].int amp0x00ff0000 gt gt16,

pestaña[m] ]. gt gt8,

tab [m]. int amp0x 000000 ff);

printf("Presione cualquier tecla para salir. \n "); );

}