为了账号安全,请及时绑定邮箱和手机立即绑定

使用前缀增量运算符和括号优先级的数学表达式的澄清

使用前缀增量运算符和括号优先级的数学表达式的澄清

明月笑刀无情 2021-04-08 14:11:34
给出以下代码:int p,k=8;p=k*(++k-8);System.out.println(p);什么时候++k被评估k=9,然后就变成了k*(9-8)给予9*1int p,k=8;p=(++k-8)*k;System.out.println(p);但这给出了9作为输出
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

这是您的代码编译的类文件:


   int k = 8;

    byte var10000 = k;

    int k = k + 1;

    int p = var10000 * (k - 8);

    System.out.println(p); 


查看完整回答
反对 回复 2021-04-14
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

你有一个乘法

left side:  k  
right side: (++k-8)

就像您正确说的那样,大括号优先。但是,您的程序仍然“从左到右”运行。因此,首先评估左侧,即k = 8。然后评估右侧,即(++k-8) = 1。现在我们已经确定了双方,可以将它们相乘:8*1 = 8


查看完整回答
反对 回复 2021-04-14
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信