java - 如何评估此 switch 语句?

标签 java switch-statement

编译器如何解释这个 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

j2,因此表达式的计算结果为 4-2 = 2

i 已递增,因此现在的值为 5j被switch语句中的代码修改。

关于java - 如何评估此 switch 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25091425/

相关文章:

c# - C# switch 语句的默认标签将如何处理可为 null 的枚举?

c - 多个案例的 switch 语句

java - Java中如何压缩switch结构?

java - 无法导入Java类?

java - Xampp Tomcat 未启动返回代码 : -1073741510

javascript:switch 语句中的常用命令

c# - 带枚举器的 Switch 语句

java - Appengine 无法从数据存储中检索实体

java - 用字符串终止循环。 ( java )

java - 加密字符串到 byte[]