java - 使用前缀增量运算符和括号优先级对数学表达式进行澄清

标签 java math operator-precedence associativity

鉴于此代码:

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 作为输出

最佳答案

你有一个乘法

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

正如您所言,大括号优先。但是,您的程序仍然“从左到右”运行。因此首先计算左侧,即 k = 8。然后计算右侧,即 (++k-8) = 1。 现在我们已经确定了两边,可以将它们相乘:8*1 = 8

关于java - 使用前缀增量运算符和括号优先级对数学表达式进行澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54050525/

相关文章:

java - 遍历方法参数

java - JScrollPane 边框重叠在 JTable 边框上

c - 使用算术索引数组而不是显式/单个值会导致问题吗?

c++ - 自定义类型的运算符优先级,当存在多个相同运算符时是否可以进行惰性求值?

c++ - 运算符重载优先级

java - 迭代 Long 列表会导致 java.lang.ClassCastException

java - 如何更改 RecyclerView 中所有项目的布局?

math - 点到多面体或多边形的距离

java - Java的快速超越/三角函数

ios - 检测多边形是否有相交线(领结)