Меня всегда учили почти никогда не использовать операторы goto в программировании. Однако мы обязаны сделать это как часть моего самого последнего проекта по программированию. У меня есть оператор if / else с различными операторами goto, и операторы goto не выполняются. Понятия не имею почему. Любая помощь будет оценена.
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
Краткое объяснение сдвига битов и тому подобное: Мы реализуем компьютерный процессор, и нам нужно посмотреть на первые 3 бита 25-битного кода операции. Итак (myInt >> 22) & 7 выделяет 3 бита в коде операции.
Есть идеи, что здесь происходит?