【问题标题】:Can anyone explain the output process in java谁能解释一下java中的输出过程
【发布时间】:2022-01-03 17:52:19
【问题描述】:
int p=15, q=12, s;  
s=p/q*++p%(++p%--q);
System.out.print(s);

我正在根据运算符和关联性的优先级进行尝试,但我认为它应该给我输出2,但它给我4作为输出。

【问题讨论】:

  • 能否请您删除您理解的部分并仅显示您认为应该以不同方式工作的操作?
  • 我觉得应该先解决括号
  • 括号内为16%11=5
  • 必须了解评估顺序与运算符优先级不同。评估顺序是从左到右。
  • 假设 OP 知道 ++-- 的影响。

标签: java output


【解决方案1】:

优先级

p/q*++p%(++p%--q)

计算为

((p / q) * (++p)) % ((++p) % (--q))

使用operator precendece rules

注意++x/--x将变量加/减1,运算后返回结果。由于它们更改了变量本身,因此效果显然会延续到变量的其他用法。

评估

然后评估从左到右,数学是

((15 / 12) * (16)) % ((17) % (11))

导致4:

  ((15 / 12) * (16)) % ((17) % (11))
= (1 * 16) % 6
= 16 % 6
= 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2021-04-24
    • 1970-01-01
    • 2017-09-12
    相关资源
    最近更新 更多