我有下面的代码,它给出了意外的结果。据我了解,结果应该是6,但应该是1。有人可以帮我得到它吗?
int j = 0;
int i1 = j*5+ ++j;
System.out.println("j =" + j);
System.out.println("i1 =" + i1);
答案 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。