提问人:Chinmay Krishna 提问时间:10/14/2023 更新时间:10/14/2023 访问量:50
Java 中的括号和一元运算符优先级
Parentheses and Unary Operator Precedence in Java
问:
根据运算符的优先顺序,在一元运算符(如 或)之前进行计算。但是,让我们考虑以下代码:-()
++
--
int x = 1;
x = 2 + (x++);
如果首先执行,则 的值应更新为 2,因此 x 的值应为 。但是,在执行代码时,的值为 。这是否意味着在没有考虑周围的情况下评估了表达式,还是我遗漏了什么?x++
x
4
x
3
()
x++
答:
1赞
rufo123
10/14/2023
#1
让我试着解释一下。
如果将 (x++).它仍被计算,但其值在增量 (++) 操作之前使用。
代码的顺序如下:
首先计算 (x++)。此时 x 仍为 1,(x++) 返回 x 的原始值 (1),然后将 x 递增为 2。
计算括号中的 x++ 后,表达式变为 x = 2 + 1,如下所示:
递增后运算符 x++ 返回 x 的当前值,然后递增 x。 因此,在表达式中,x++ 返回 x 的当前值(即 1),然后将 x 递增到 2。
因此,在此步骤结束时,表达式 x = 2 + 1 为 3。
最后,加法的结果 (3) 分配给 x。所以 x 现在是 3。
要使代码返回 4,应使用“++x”(预增量运算符) 此运算符首先递增 x,然后返回 x 的更新值。如果在表达式中使用 ++x,则 x 在使用其值之前递增。
希望我解释得很好。:D
0赞
Reilas
10/14/2023
#2
"...根据运算符的优先级顺序,() 在一元运算符(如
++
或 --
)
之前计算。..."
表达式将按从左到右的顺序计算。
Java® 语言规范 – 第 15 章。表达 式
"...这是否意味着表达式的计算没有考虑
x++
周围的(),
或者我遗漏了什么?
括号不表示何时计算一元运算符。
我建议查看以下 Java 教程。
运算符(Java 教程>学习 Java™ 语言>语言基础知识)
评论