On m'a toujours appris à ne jamais utiliser les instructions goto en programmation. Cependant, nous sommes tenus de le faire dans le cadre de mon plus récent projet de programmation. J'ai une instruction if/else avec diverses instructions goto, et les instructions goto échouent à s'exécuter. Je ne sais pas pourquoi. Toute aide serait appréciée.Impossible d'exécuter la ligne de code
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
Une brève explication du décalage de bits et tel: Nous mettons en œuvre un processer informatique, et ont besoin de regarder les 3 premiers bits d'un opcode 25 bits. So (myInt >> 22) & 7 isole les 3 bits de l'opcode.
Des idées sur ce qui se passe ici?
Ce que vous fait penser le 'goto' n'exécute pas? De plus, les instructions 'printf' sont trompeuses ou erronées: Si le premier' printf' s'imprime, le second et le troisième imprimeront. Parcourez-le avec un débogueur, qui vous montrera où l'exécution se passe. – Thanatos
Quel résultat obtenez-vous et quel résultat voulez-vous obtenir? –
hmm .. l'avez-vous essayé avec votre instruction printf ci-dessus et ne pas voir les tirages? Est-ce que le code que vous testez a un code différent? Vous devriez au moins voir tomber. –