Siempre me han enseñado a casi nunca utilizar declaraciones goto en la programación. Sin embargo, estamos obligados a hacerlo como parte de mi proyecto de programación más reciente. Tengo una instrucción if/else con varias declaraciones goto, y las declaraciones goto no se pueden ejecutar. No tengo ni idea de porqué. Cualquier ayuda sería apreciada.goto línea de código que no se puede ejecutar
int myInt = XXXXXXX;
if((myInt>>22) & 7 == X)
goto a;
else if((myInt>>22) & 7 == Y)
goto b;
else if((myInt>>22) & 7 == Z)
goto c;
a:
printf("this always executes\n");
goto end;
b:
printf("this never executes\n");
goto end;
c:
printf("nor does this\n");
goto end;
end:
//more code
Una breve explicación del desplazamiento de bits y dicho: Estamos implementando una procesadora de ordenador, y la necesidad de mirar a los 3 primeros bits de un código de operación de 25 bits. Entonces (myInt >> 22) & 7 aísla los 3 bits en el código de operación.
¿Alguna idea de lo que está pasando aquí?
¿Qué te hace pensar que el 'goto' no se ejecuta? Además, las instrucciones 'printf' son engañosas o incorrectas: si imprime la primera' printf', se imprimirá la segunda y la tercera. Dé un paso adelante con un depurador, que le mostrará dónde va la ejecución. – Thanatos
¿Cuál es el resultado que está obteniendo y cuál es el resultado que quería obtener? –
hmm ... ¿lo intentó con su declaración de printf anterior y no ve las impresiones? ¿El código con el que está probando tiene un código diferente? Al menos deberías ver Fallthrough. –