java - 一元增量运算符疯狂
问题描述
有人可以给我一种调试以下示例的方法:
public class Example1 {
public static void main(String[] input) {
int i = 0;
// i = i++ + i++; // prints 1
// i = i++ + i++ + i++; // prints 3
i = i++ + i-- + i++; // prints 1
System.out.print(i);
}
}
由于每个示例都是一个单行代码,因此使用调试不是解决方案……我正在尝试使用类似这样的代码来进行 Java OCA 8 考试。
谢谢你的帮助
解决方案
让我们分解你的第一个例子:
int i = 0;
i = i++ + i++;
第一个i++
评估为0
。的新值i
是 now 1
。第二个i++
评估为1
,新值为i
now 2
。接下来是两个后缀增量表达式的相加:0 + 1 = 1。最后,将此总和分配给,用总和 ( ) 的结果i
覆盖其临时值 ( )。2
1
其他示例非常相似,我让 OP 自己处理它们。
推荐阅读
- go - Go 如何在没有内置 Comparable 接口的情况下处理比较?
- php - 如何仅在 woocommerce 的商店页面上显示有货的变体?
- php - php 正在验证一个无效的 url URL
- vue.js - Vue-CLI的逐步调试
- php - Android应用程序解码来自PHP MySql数据库的JSON响应,没有特殊字符
- r - 如何使用 R 对 NeuralNet 模型使用分类/因子输入
- javascript - PropTypes 给我一个字符串类型错误
- agda - 为什么将 Size 定义为参数与索引时的处理方式不同?
- spring - 使用 @ResponseBody 返回 BigDecimal 精度丢失
- permissions - 如何查看 Android 10 中权限的分组方式