前缀自增的优先级竟然高于括号?

e98123 2017-01-14 08:47:24

int n = 5;
System.out.println(++n + (n + 5)); //打印结果是 17


可见是运算的顺序是分为以下三步:
++n = 6
(n + 5) = (6 + 5) = 11
6 + 11 = 17

有点迷惑,括号优先运算不是号称优先级最高的吗?为什么会这样?
...全文
539 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37368618 2017-01-19
  • 打赏
  • 举报
回复
有点懵
We_Join 2017-01-18
  • 打赏
  • 举报
回复
int n = 5; System.out.println( (n + 5)+ ++n); 结果是16
soton_dolphin 2017-01-18
  • 打赏
  • 举报
回复
从左到右执行啊
insping 2017-01-16
  • 打赏
  • 举报
回复
引用 1 楼 qq_17280849 的回复:
++n + (n+5) 因为(n+5)和++n之间是用+号连接的,所以从左到右的计算顺序,++n是先加后用;n++是先用后加
+1
那年花 2017-01-16
  • 打赏
  • 举报
回复
这不是优先级问题 是运算顺序问题 ++n跟(n+5)用+连接 由于先运算了++n 所以以后的n就是++n的值了
qq_37137839 2017-01-16
  • 打赏
  • 举报
回复
你把括号放前面运算下看看,是16,说明优先级没有错
  • 打赏
  • 举报
回复
这跟括号没关系吧,从左到右执行
沁海棠 2017-01-14
  • 打赏
  • 举报
回复
加号在前面自增再使用
雨上小公举 2017-01-14
  • 打赏
  • 举报
回复
++n + (n+5) 因为(n+5)和++n之间是用+号连接的,所以从左到右的计算顺序,++n是先加后用;n++是先用后加
ryuugu_rena 2017-01-14
  • 打赏
  • 举报
回复
没有高于括号,你是怎么理解的?++n会使n变为6,也就是++n后面的n都是6,优先级没错的。

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧