1

「TRUE」と「FALSE」の 2 つの出力の違いを理解するのを手伝ってください。また、このロジックと演算子に関連するトピックを Oracle Docs で取得する方法を教えてください。

int i = 1;
int j = 2;

System.out.println(i==j--);// FALSE
j = 2;
System.out.println(i==j-1);//TRUE
j = 2;
System.out.println(i==--j);//TRUE
4

3 に答える 3

3

i == j--意味i == j; j = j - 1;

i == j-1意味i == (j-1);

i == --j意味j = j - 1; i == j;

以下は演算子の優先順位表です。たとえば、-は よりも優先順位が高く、これが意味する==理由です。i==j-1i==(j-1)

于 2013-04-24T02:43:39.827 に答える
3

各行の先頭にあるiis1jisの説明と同様に、次の表に同等のものを示します。2

i==j--;   i==j; j--;  // 1==2 is false, j <- 1
i==j-1;   i==j-1;     // 1==(2-1) is true, j does not change
i==--j;   --j; i==j;  // j <- 1, 1==1 is true
于 2013-04-24T02:44:28.270 に答える
1

違いは次のとおりです。

j-- 呼び出しの後に発生します (したがって、比較中に i==j を評価するのは j の現在の値です。 -- は (接尾辞) の後に発生します)

j-1 は式の一部であるため、計算の一部として発生します

--j は前の関数呼び出しであるため、前に減算されます (接頭辞)

于 2013-04-24T02:44:09.633 に答える