在Java中,为什么我不能编写i ++++或(i ++)++?

Joh*_*oth 7 java increment jls decrement

当我尝试在/减量中写一个后缀/前缀,然后在/减量中写一个post /前缀时,我得到以下错误:操作++/ - 的参数无效.

但是,据JLS称:

PostIncrementExpression:
        PostfixExpression ++
Run Code Online (Sandbox Code Playgroud)

PostfixExpression:
        Primary
        ExpressionName
        PostIncrementExpression
        PostDecrementExpression
Run Code Online (Sandbox Code Playgroud)

所以写:

PostfixExpression ++ ++
Run Code Online (Sandbox Code Playgroud)

应该可能......有什么想法吗?

Joe*_*oey 23

请注意,原始语法缺少任何语义.它只是语法,并不是每个语法上有效的程序通常都是有效的.例如,在使用之前必须声明变量的要求通常不包含在语法中(您可以,但它很麻烦).

Postfix-increment产生一个rvalue - 就像你不能postfix-increment文字一样,你不能后缀增加结果i++.

从JLS引用(3 版,页486):

后缀增量表达式的结果不是变量,而是值.


JOT*_*OTN 8

错误告诉你答案:

unexpected type
required: variable
found   : value
        (i++)++;
Run Code Online (Sandbox Code Playgroud)

因此,当运算符需要变量时,i ++会求值.

  • 我想,嗯,取决于编译器.EclipseC产生»操作的无效参数++/ - «这没有帮助. (2认同)

Chr*_*odd 5

您只能应用++--表示可修改位置(左值)的表达式.一个++或的结果--是来自该位置的值(一个右值 - 在增量或减量之前或之后),而不是一个可修改的位置.所以你不能说(a++)++比你说的更多(a+b)++- 没有地方可以修改.