微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当赋值运算符的优先级最低时,y=x++ 和 y=x-- 有何不同?

如何解决当赋值运算符的优先级最低时,y=x++ 和 y=x-- 有何不同?

我是 Java 新手。 才发现在表情里, y=x++,y 假设 x 的值,x 变为 +1。 如果我听起来很愚蠢,请原谅我,但根据 order of precedence,赋值运算符在最后。所以 x++ 不应该先发生,然后是赋值。提前致谢。

解决方法

问:所以 x++ 不应该先发生,然后是分配。

答:是的。这就是发生的事情。语句 y = x++; 等效于以下内容:

temp = x;      // | This is 'x++'
x = x + 1;     // | (note that 'temp' contains the value of 'x++')

y = temp;      // This is the assignment.

但如您所见,操作的顺序(++=)不会影响操作的实际操作。

因此...

问:当赋值运算符的优先级最低时,y=x++y=x-- 有何不同?

A:他们不是。

,

y=x++ 将 x 的值分配给 y,然后 x 递增。 x++ 操作称为后增量。

以下是一些您可以运行以进行说明的代码:

int x = 0;
System.out.println("Illustration of post-increment");
System.out.println(x);
System.out.println(x++);
System.out.println(x);

int y = 0;
System.out.println("Illustration of pre-increment");
System.out.println(y);
System.out.println(++y);
System.out.println(y);

,

运算符优先级和计算顺序是两个不同的概念,它们没有关系。

如果您有 a() + b() * c(),这并不意味着 b()c() 首先被调用,因为 * 的优先级高于 +a() 仍然首先被评估。除非另有说明,否则评估顺序通常是从左到右。

Java 编程语言保证 运算符似乎以特定的评估顺序进行评估, 即从左到右。

https://docs.oracle.com/javase/specs/jls/se14/html/jls-15.html#jls-15.7

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。