我正在寻找代码后端逻辑的答案。
int i=4;
System.out.println("Output"+ (i += i++));
System.out.println("Output Step 2"+ i);
两种情况下答案都是8。现在第一步,答案8非常自然,i += i++
转换为i = i + i++
;。
由于i++
是后增量运算符,它应该在步骤2中将值增加到9.我理解的缺陷是什么?
答案 0 :(得分:3)
System.out.println("Output"+ (i += i++)); // sum will be 8, i=8
然后发布i++
运算符不会产生任何影响,因为在此之前发生了总和。
确保Java
按值传递。
实际上会发生什么?
int i=4
当System.out.println("Output"+ (i += i++));
System.out.println("Output Step 2"+ i);
您可以使用Jeliot
尝试此操作答案 1 :(得分:2)
在我看来,第一个i ++被分配i + = i ++删除。
答案 2 :(得分:2)
您的代码相当于:
int i=4;
int temp = i + i; // 8
i = i + 1;
i = temp; // still 8
System.out.println("Output"+ i); //8
System.out.println("Output Step 2"+ i); //8
因此在两种情况下结果都是8
。
答案 3 :(得分:2)
当您使用" i + = i ++"时,i变量的存在值在从1递增之前添加到自身。添加值后,将值从1增加。这就是System.out.println("输出" +(i + = i ++));正在显示"输出8"作为输出。
此外,如果您使用i ++,则该更改不会影响原始变量。这就是为什么你在第二个输出也得到相同的结果。