use*_*148 3 java switch-statement
编译器如何解释此switch语句?我假设switch语句中的内容是(41),为什么它会转到案例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
Run Code Online (Sandbox Code Playgroud)
分解:
i++-j
Run Code Online (Sandbox Code Playgroud)
++优先级高于-:
(i++)-j
Run Code Online (Sandbox Code Playgroud)
这++是后缀增量 - 它将计算i增量前的值.初始值为i4,因此:
4-j
Run Code Online (Sandbox Code Playgroud)
j是2这样的表达式评估为4-2 = 2.
i已经递增,所以现在有了价值5; j由switch语句中的代码修改.