Java 前缀运算符行为

标签 java

我想知道为什么下面的代码返回 0。我认为 num2 在应用于 *= 之前会递增,第二行将执行 num2 = 1* 1

int num2 = 0;
num2 *= ++num2;
System.out.println(num2);

最佳答案

来自JLS :

A compound assignment expression of the form E1 op= E2 is equivalent to E1 = (T) ((E1) op (E2)), where T is the type of E1, except that E1 is evaluated only once.

因此,您的代码相当于:

num2 = (int) (num2 * ++num2);

乘法的左侧操作数为零,因此结果为零。

关于Java 前缀运算符行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44332191/

相关文章:

java - 如何从内部类访问外部类字段?

java - Spring IoC 的轻量级替代品——可能针对 Android 设备

java - 升序冒泡排序 - 程序无法编译

java - Java 中的双重算术和相等性

java - 启动 SQLWorkbench/J 时为 "Unable to load Java Runtime Environment"

java - 找出文件夹中有多少文件,然后将该数字写入android中的ListView

java - Minishift - Pod 未启动

java - 从url中获取域名

java - 将多边形转换为边界框数组

java pdf文件写入