我一直被教导几乎从不在编程中使用goto语句.但是,作为我最近的编程项目的一部分,我们需要这样做.我有一个带有各种goto语句的if/else语句,并且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
Run Code Online (Sandbox Code Playgroud)
比特移位的简要说明等:我们正在实现一个计算机处理器,需要查看25位操作码的前3位.因此(myInt >> 22)&7隔离了操作码中的3位.
关于这里发生了什么的任何想法?
Soa*_*Box 18
这实际上与goto无关.你有一个运营商优先问题.按位和(&)的优先级低于等式(==).结果,你真的在做if ((myInt>>22) & (7 == X)).
要解决它,只需添加一些parens : if ((myInt>>22) & 7) == X).