4

これはばかげた質問かもしれませんが、なぜそうなのかわかりません。次のコード スニペットを書きました。

public class Test {
public static void main(String... str)
{
    int y = 9;
    int z = +++y; //unexpected type required:variable found:value
    int w = +-+y; // Not Error
}}

+-+y が機能し、 +++y が機能しないのはなぜですか?

4

2 に答える 2

7

+++y++は、演算子の後に が続くものとして解釈され+yます。

+yはそのまま有効です-yが、++演算子は変数が操作されることを期待しており (値をインクリメントすることはできません)、値+yと見なされます (加算操作が実行されました)。

+-+yas0 + (0 - (0 + y))であり、インクリメントまたはデクリメント演算子が含まれていないため、演算によって式全体が (変数参照ではなく) 値に変換されても、効果はありません。

于 2013-11-09T13:07:31.473 に答える