多个运算符的Java优先级
这更多的是理解
Java对算术运算的评估的理论问题.由于和 – 具有相同的优先级,我不太明白Java如何评估以下表达式(两个操作数之间有多个操作符).
public static void main(String[] args) { int a = 1; int b = 2; System.out.println(a+-b); // results in -1 System.out.println(a-+b); // results in -1 System.out.println(a+-+b); // results in -1 System.out.println(a-+-b); // results in 3 System.out.println(a-+-+b); // results in 3 System.out.println(a+-+-b); // results in 3 System.out.println(a-+-+-b); // results in -1 System.out.println(a+-+-+b); // results in 3 } 从Java 8语言规范(§15.8.2):
我也注意到,每次#perators是偶数,结果是一样的,顺序并不重要. System.out.println(a-+-b); // results in 3 System.out.println(a-+-+-b); // results in -1 有了所有这些信息,我仍然看不到这种模式或这种方式如何运作. 解决方法
在数学上,你怎么评价这个?
a - + - b 添加一些括号有助于: a - (+ (-b)) 我们可以这样做,因为这并不违反优先规则. 那么我们可以开始减少:(-b)真的是-b,而-b是真的是b,所以结果是1 2 = 3. 我们来看看第二个: a - + - + - b a - (+ (- (+ (-b)))) a - (+ (- (-b))) a - (+ b) a - b 1 - 2 = -1 这么简单的数学规则自然而然. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |