0

我正在将 c++ 标头转换为 java,以下不起作用。opstring 是一个字符串,而 alumacOP 是一个字符串数组。opindex 是一个整数。

opstring = alumacOP[opindex][(op >> 11) & 3 == 3]; //code does not work.

由于某种原因,这不起作用。这不是算法,而是eclipse说没有为布尔和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;
4

3 回答 3

3

这取决于运算符的优先级。

opstring = alumacOP[opindex][(((op >> 11) & 3) == 3)?1:0];

是你想要的。(注意 & 周围的括号和 ?: 将 bool 转换为 int。

于 2012-10-03T00:14:58.100 回答
1

您看到的 & 是按位与,而不是逻辑与。

您看到它引发错误的原因是因为您的 if 语句条件是赋值,而不是检查。

您需要使用 2 个等号 (==),例如 if (x & y == i)

于 2012-10-03T00:14:22.737 回答
0

在 java 中,您可以&在两个booleans 或两个ints 上执行此操作,但您不能在其中一个上执行此操作。=还要注意您的操作顺序,以及和之间的区别==

于 2012-10-03T00:13:15.763 回答