【发布时间】:2019-01-05 09:01:55
【问题描述】:
鉴于此代码:
int p,k=8;
p=k*(++k-8);
System.out.println(p);
当++k 被评估为k=9 然后变成k*(9-8) 给9*1
int p,k=8;
p=(++k-8)*k;
System.out.println(p);
但这给出了 9 作为输出
【问题讨论】:
-
在我的 IDE 中,它在程序
p=8和k=9的末尾打印 8 。 @Harsh 您正在使用哪个 IDE? -
优先级与评估顺序不同。 Java always evaluates left-to-right。优先级指定如何组合这些评估。
-
'这'是什么?一个正确的 Java 编译器应该在这里产生 8。你说过你得到 8 和 9。它是哪个?不清楚你在问什么。
标签: java math operator-precedence associativity