use*_*380 3 java variable-assignment operator-keyword
我在java中理解复合赋值运算符和赋值运算符时遇到了一些问题.有人可以向我解释这两个运营商是如何运作的吗?(Somwhere我发现了一个非常好的示例代码,使用临时变量来解释工作,但遗憾的是我已经失去了它.)非常感谢你的优势.这是我的小例子代码(我已经知道前缀和后缀运算符之间的区别):
int k = 12;
k += k++;
System.out.println(k); // 24 -- why not (12+12)++ == 25?
k = 12;
k += ++k;
System.out.println(k); // 25 -- why not (1+12)+(1+12) == 26?
k = 12;
k = k + k++;
System.out.println(k); // 24 -- why not 25? (12+12)++?
k = 12;
k = k++ + k;
System.out.println(k); // 25 -- why not 24 like the previous one?
k = 12;
k = k + ++k;
System.out.println(k); // 25 -- OK 12+(1+12)
k = 12;
k = ++k + k;
System.out.println(k); // 26 -- why?
Run Code Online (Sandbox Code Playgroud)
请注意,在所有情况下,对k的赋值都会覆盖右侧可能发生的任何增量.
将评论放在一行:
int k = 12;
k += k++;
System.out.println(k); // 24
Run Code Online (Sandbox Code Playgroud)
k++表示在使用该值后递增,因此这与编码相同k = 12 + 12
k = 12;
k += ++k;
System.out.println(k); // 25
Run Code Online (Sandbox Code Playgroud)
++k表示在使用该值之前递增,因此这与编码相同k = 12 + 13
k = 12;
k = k + k++;
System.out.println(k); // 24
Run Code Online (Sandbox Code Playgroud)
k++表示在使用该值后递增,因此这与编码相同k = 12 + 12
k = 12;
k = k++ + k;
System.out.println(k); // 25
Run Code Online (Sandbox Code Playgroud)
k++表示在使用该值后递增,因此这与编码相同k = 12 + 13
k = 12;
k = k + ++k;
System.out.println(k); // 25
Run Code Online (Sandbox Code Playgroud)
++k表示在使用该值之前递增,因此这与编码相同k = 12 + 13
k = 12;
k = ++k + k;
System.out.println(k); // 26
Run Code Online (Sandbox Code Playgroud)
++k表示在使用该值之前递增,然后再次使用该值,因此这与编码相同k = 13 + 13
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |