[英]Pre/Post Increment operator expression Java
在 Java
int a=10;
a = a + ++a;
System.out.println(a);
它打印21
。 我知道它會打印22
我已經明白,由於'++'具有更高的優先級,所以它會首先被計算並且它會改變a的值,因為它是預增量的,所以變量'a'的增量會在那里發生,然后......稍后它應該加上 a 的最新值
如下所示:
a = a + 11; // (a is 11 after pre - increment)
所以,現在a = 11 + 11 = 22
,但程序產生o/p = 21
。
意味着它沒有選擇 a 的最新值11
,而是使用舊值10
a = 10+ 11 = 21
..有人可以解決我的疑問嗎?
如果答案包含任何書籍或 java 規范中的概念/參考,將不勝感激
i++
- 獲取然后遞增++i
- 遞增然后得到unary operations (++, !)
具有最高優先級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
來自 Java 文檔:
除了賦值運算符之外的所有二元運算符都是從左到右計算的; 賦值運算符從右到左求值。
因為 a =10,所以 a = 10 + 11 = 21。
為什么? 因為 a 的值為 10,因為你還沒有增加它,所以它保持在 10。
在 ++a 中,現在只有你增加它,然后變成 11。現在,a = 10 + 11 是 21。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.