我有这段代码,
class Test
{
public static void main(String args[])
{
int a=--4-2*2/9-3;//Line 1
System.out.println(a);
}
}
为什么在--4上出现此编译时错误?请不要建议我有-(-4)。我只是想弄清楚,为什么上面的代码是编译时错误,并且如果我将第1行的代码更改为a =--4-2 * 2 / 9-3,则O / p为1。即- (-4)。我错过了一秒钟,它必须与-=即a = a-(表达式的其余部分)相同。它也用++运算符给出相同的错误!有人可以向我解释一下吗?
--
是Java和许多其他语言的“减量”运算符。编译器不会把它当作两个原因,-
运营商是有一个基本的规则,编译器会寻找那些形式的“分隔符”或“经营者”之一,所定义的连续字符序列最长的在这里。(>
由于泛型,字符的处理方式有所不同。)
这在JLS 3.2中有明确说明:
即使结果最终不能做出正确的程序,而每个词法都可以使用,最长的翻译也会在每个步骤中使用。[
>
字符]有一个例外...
因此,当编译器看到时--4
,会将其视为--
应用于的运算符4
,这是非法的。它不会回溯并尝试寻找其他方式来解释--
。
但是,如果看到- -4
连字符之间有空格,则-
除了单个减号之外,它不能将其解释为其他任何内容。这是合法的,与的含义相同-(-4)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句