评估操作员时出现意外结果

时间:2019-01-16 00:42:36

标签: java

我有下面的代码,它给出了意外的结果。据我了解,结果应该是6,但应该是1。有人可以帮我得到它吗?

int j = 0;
int i1 = j*5+ ++j;
System.out.println("j =" + j);
System.out.println("i1 =" + i1);

2 个答案:

答案 0 :(得分:1)

得到6和得到1之间的区别是您认为j*5将首先被评估还是++j将首先被评估。 Java中的规则是,如果依赖项未强制执行子表达式,则将按照子表达式在表达式中出现的顺序对其求值。这里,j*5首先出现在表达式中,因此首先对其求值。这样就得到了1的结果。

答案 1 :(得分:-1)

您有类似以下代码的内容:

int j = 0;
int i1 = ++j*5 + j;
System.out.println("j =" + j);
System.out.println("i1 =" + i1);

您需要为此修改代码:

session

“ i1 =“ + i1)的最终输出为6。 问题在于,在您的第一个代码示例中,您没有在将J乘以5之前对其进行递增,因此仅将其乘以+1是因为在乘以0 * 5之前,您实际上并未将j递增。(0 * 5)+ 1 =1。我所做的只是简单地增加j(以前缀形式),使其递增1,现在您要乘以(1 * 5)+1。