¿Por qué este tipo de operación AND bit a bit siempre informa un error?
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 ) p>
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 "); );
}