Java前缀和一元运算符在一起

Kir*_*ran 8 java syntax-error unary-operator prefix-operator

我正在研究Java前缀运算符,并遇到了这种行为

i = +--j //does not give an error
i = -++j //does not give an error

i = ---j //gives an error
i = +++j //gives an error
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Mur*_*nik 6

由于两个++++(或---)是左结合,+++j被评估为++(+j).由于++只能应用于l值(即变量)而+j不是l值(变量),因此会出现编译错误.

你可以使用括号来解决这个问题:i = +(++j);.