增量前/增量后运算符表达式Java



在Java 中

int a=10;
a = a + ++a;
System.out.println(a);

它打印CCD_ 1。我知道它会打印22

我知道,由于"++"具有更高的优先级,因此它将首先进行计算,并将改变a的值,因为它是预增量,因此变量"a"的增量将在那里发生,然后。。。稍后,它应该添加a的最新值

如下所示:

a = a + 11; // (a is 11 after pre - increment)

所以,现在是a = 11 + 11 = 22,但程序生成o/p = 21

意味着它没有选择11的最新值,并使用10的旧值

a = 10+ 11 = 21

有人能澄清我的疑虑吗?

如果答案包含任何书籍或java规范的概念/参考,我将不胜感激

来自Java文档:

除赋值运算符外的所有二进制运算符都将求值从左到右;赋值运算符从右到左求值。

  • i++-获取然后递增
  • ++i-递增然后得到
  • unary operations (++, !)具有最高优先级
  • 表达式是从左到右计算的(感谢user16320675(
int i = 10;
System.out.println(i++);  // 10
System.out.println(i);    // 11
System.out.println(++i);  // 12
System.out.println(i);    // 12

在您的示例中:

int a = 10;
a = a + ++a; // -> 10 + (10 + 1), from left to right
System.out.println(a);  // 21

由于a=10,a=10+11=21。

为什么?因为a的值是10,因为你还没有增加它,所以它保持在10。

在++a中,现在只有您将其递增,然后变为11。现在,a=10+11是21。

最新更新