gpt4 book ai didi

Java "x += y"和 "x = x+y"产生不同的结果

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:41 25 4
gpt4 key购买 nike

我想到了两个表达式来将位运算的值赋给变量,并注意到“x+=y”和“x=x+y”在这种情况下产生了不同的结果:

public void random () 
{
int n = 43261596;
System.out.println(Integer.toBinaryString(n));
n = n + 0&1; //binary representation of n is 0
//n += 0&1; //result is the same as n
System.out.println(Integer.toBinaryString(n));
}

我做了一些研究,发现“x+=y”和“x=x+y”不等价的唯一情况是操作类型不同,但是在这种情况下,“n”是 int,"0&1"应该是 int 的类型(根据这个问题 Why does bitwise AND of two short values result in an int value in Java? :

Because the Java Language Specification says that the result of non-long integer arithmetic is always an int.)

所以我想知道为什么它会产生不同的结果。

最佳答案

区别是operator precedence . + 优先于 &,但 & 优先于 +=。所以你的操作转化为:

n = (n + 0) & 1; // = n & 1 = 0 (when n is even)
n += (0 & 1); // = n + 0 = n

关于Java "x += y"和 "x = x+y"产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com