编译器如何解释这个 switch 语句?我假设 switch 语句中的内容是 (41),那为什么会转到 case 2?
int i = 4;
int j = 2;
switch(i++-j) { //switch is evaluted to be (41)??
case 3: i++; break;
case 1: j++; break;
case 2: j+=2; break;
case 5: i+=2; break;
default: i +=5; break;
}
System.out.println(i); //Prints out 4
System.out.println(j); //Prints out 5
最佳答案
分解:
i++-j
++
比 -
具有更高的优先级,因此:
(i++)-j
++
是后缀增量——它会计算增量前的 i
的值。 i
的初始值为 4,因此:
4-j
j
是 2
,因此表达式的计算结果为 4-2 = 2
。
i
已递增,因此现在的值为 5
; j
被switch语句中的代码修改。
关于java - 如何评估此 switch 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25091425/