0

C ++ヘッダーをJavaに変換していますが、以下は機能しません。opstringは文字列であり、alumacOPは文字列配列です。opindexはintです。

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

これは何らかの理由で機能しません。これはアルゴリズムではありませんが、ブール型と整数型に対して「&」が定義されていないことを示す日食です。

だから私の質問は:なぜ論理ANDはJavaのブール値のみを参照するのですか?これが機能するため:

boolean boola,boolb;
if(boola & boolb)
  return;

しかし、これではありません(日食はまだエラーをスローします:

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

表示されている & はビットごとの AND であり、論理 AND ではありません。

エラーがスローされるのは、if ステートメントの条件がチェックではなく代入であるためです。

if (x & y == i) のように、2 つの等号 (==) を使用する必要があります。

于 2012-10-03T00:14:22.737 に答える
0

Javaでは&、2 つbooleanまたは 2 つintの で実行できますが、それぞれ 1 つで実行することはできません。また、操作の順序と と の違いにも注意して=ください==

于 2012-10-03T00:13:15.763 に答える