我正在将c ++标头转换为java,以下内容不起作用。 opstring是一个字符串,alumacOP是一个字符串数组。 opindex是一个int。
opstring = alumacOP[opindex][(op >> 11) & 3 == 3]; //code does not work.
由于某种原因,这不起作用。这不是算法,而是eclipse说'&'未定义类型boolean和int。
所以我的问题是:为什么逻辑AND只引用java中的布尔值?因为这有效:
boolean boola,boolb;
if(boola & boolb)
return;
但不是这个(eclipse仍然会引发错误:
int x = 9, y = 8;
for(int i = 0; i < 100; i++)
if(x & y = i)
return;
答案 0 :(得分:3)
这取决于运营商的优先级。
opstring = alumacOP[opindex][(((op >> 11) & 3) == 3)?1:0];
是你想要的。 (注意&amp;周围的括号,以及?:将bool转换为int。
答案 1 :(得分:1)
&amp;你看到的是按位AND,而不是逻辑AND。
你看到它抛出错误的原因是你的if语句条件是赋值,而不是检查。
你需要使用2个等号(==),如if(x&amp; y == i)
答案 2 :(得分:0)
在java中,您可以在两个&
或两个boolean
上执行int
,但不能在其中一个=
上执行此操作。另请注意您的操作顺序以及==
和{{1}}之间的区别。