【发布时间】:2021-10-21 12:53:07
【问题描述】:
class Output
{
public static void main (String[] args)
{
int a = 5;
a += 5+ (++a) + (a++);
System.out.print(a);
}
}
评价:
a += 5 + (++a) + (a++)
=> a+= 5 + 6 + (a++) [++a :increment value of a and then use it. So:increment a = 6, then use a=6]
=> a+= 5 + 6 + 6 [a++ :use and then increment value of a. So: use a=6, then increment a=7]
=> a+= 11 + 6
=> a+= 17
=> a = a+17
=> a = 7 + 17
=> a = 24
【问题讨论】:
-
请edit发帖并正确格式化代码。
-
a = 5 + 5 + 6 + 6;我们从a +=和a = 5开始。所以a = 5 + 5。一旦运行时达到++a,它就会变成6。所以a = 5 + 5 + 6 + 6(a++直到下一行才生效)。 -
但是我们应该最后评估 += 运算符,因为它的优先级最低。最后在评估所有其他运算符之后,a 变为 7。所以 7 不应该是 a = 7 + 5 + (6) + (6) 而不是 a = 5 + 5 + (6) + (6)?