由于最近有很多运算符优先级问题,我开始使用一些代码并想出了这个:
int x = someNumber;
int y = --x++;
Run Code Online (Sandbox Code Playgroud)
这给出了:
Error: unexpected type
required: variable
found: value
Run Code Online (Sandbox Code Playgroud)
我试过这个是因为我有兴趣了解java如何处理postfix运算符优先级高于的事实prefix.这似乎上面的陈述会导致矛盾,我猜这是由这个错误处理的.
我的问题是双重的:
postfix优先级高于prefix?我确信这是有充分理由的,但我无法想出一个.也许它会修复这种未定义的行为,但它会以某种方式引起更多问题?Jon*_*oni 12
错误的原因是x++产生一个值,并且您不能将减量运算符应用于值,只能应用于变量.例如,如果x = 41,则x++计算结果为41,而不是变量x,并且--(41)没有意义.
至于为什么postfix的优先级高于前缀,我的猜测是在解析时避免与其他运算符的歧义.例如,编译器可以报告语法错误,x--x而不是将其解析为x-(-x).
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |