SPi*_*dey -9 java operators modulo unary-operator
System.out.println(100% - 40);
Run Code Online (Sandbox Code Playgroud)
请解释编译器解决此问题的步骤。
就像我所了解的那样,%是一个需要两个操作数才能工作的运算符,但是在这种情况下,它如何接受另一个像“-”这样的运算符呢?
此处的格式对于正确阅读非常重要。
System.out.println(100 % -40);
Run Code Online (Sandbox Code Playgroud)
要么
System.out.println(100 % (-40));
Run Code Online (Sandbox Code Playgroud)
然后,很明显有两个运算符:余数运算符%和一元减运算符-。
此外,运算符优先级表解释了为什么即使没有圆括号,该异常表达也能正常工作。
??????????????????????????????????????????????????
? Operators ? Precedence ? ?
??????????????????????????????????????????????????
? unary ? ++expr --expr +expr -expr ~ ! ?
? multiplicative ? * / % ?
??????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)