gpt4 book ai didi

java - 无法理解以下 Java 表达式的输出。它应该只是运算符优先级和结合性的练习

转载 作者:行者123 更新时间:2023-12-02 09:13:41 26 4
gpt4 key购买 nike

下面是表达式:

class ExpresieUrata
{
public static void main(String[] args)
{
int x = 101;
int y = ( x+= (x *= 3) % ((x++ >> 2 ) - 1) ) ^ 40;
System.out.println(y);
}
}

我得到输出 68,但不明白为什么。我得出的结论是,在 XOR 运算之前,我将得到 108,由 101 + 7 组成,但不明白为什么 - 尤其是 7。

有人可以告诉我所有步骤中存储/使用的 x 的确切操作顺序和值吗?

最佳答案

public class Foo {
public static void main(String[] args)
{
int x = 101;
int y = ( x+= (x *= 3) % ((x++ >> 2 ) - 1) );
//int y = ( x+= (x *= 3) % ((x++ >> 2 ) - 1) ) ^ 40;
int z = y ^ 40;
System.out.printf("X: %d Y: %d Z: %d\n", x, y, z);
System.out.printf("303 >> 2 == %d\n", 303 >> 2);
System.out.printf("303 %% 74 == %d\n", (303 % 74));
}
}

打印:

X: 108 Y: 108 Z: 68
303 >> 2 == 75
303 % 74 == 7

x *= 3 得到 303。303 >> 2 是 75。现在减去 1 是 74。303 % 74 是 7。x+= 位使用所有副作用之前的 X 原始值,因此 101 + 7 == 108。

天哪,这太邪恶了,如果我看到这样的代码,我会说不客气的话。

关于java - 无法理解以下 Java 表达式的输出。它应该只是运算符优先级和结合性的练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59181409/

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