java - 如果括号具有更高的优先级,那么为什么首先解决增量运算符?

标签 java operator-precedence

我有一个单行代码,

int a = 10;
a = ++a * ( ++a + 5);

我的预期输出是 12 * (11 + 5) = 192 ,但我得到了 187。据我所知,()里面的自增算子要先解决,那为什么外面的先解决呢?

最佳答案

表达式从左到右计算。括号(和优先级)只是表示分组,它们不表示评估的顺序。

所以

 11 * (12 + 5)
++a   ++a

等于

187

关于java - 如果括号具有更高的优先级,那么为什么首先解决增量运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28219423/

相关文章:

java - 将波动坐标写入文件

java - 将自定义参数值或属性传递给错误页面 Servlet 处理程序

perl - 这个 Perl bool 语法有什么问题?

parsing - Scala 解析器组合器,解析器因优先级而失败

python - 为什么 bool 表达式 "1 in (1, 2, 3) == True"为 False?

java - 什么是 "Conventional Techniques"来避免死锁?

java - 如果我想传递json,如何注释jersey方法?

java - 使用 TIKA 从 URL 中提取文本

javascript - 在函数内定义未定义的全局变量

c - 运算符优先级(按位 '&' 低于 '==' )