Java 什么';s表示方程式的计算顺序;i+++++;我";在爪哇?
考虑一下这个片段:Java 什么';s表示方程式的计算顺序;i+++++;我";在爪哇?,java,operators,increment,operator-precedence,Java,Operators,Increment,Operator Precedence,考虑一下这个片段: int a = 1, b = 1, c = 1; System.out.println(a + ++a); System.out.println(b++ + ++b); System.out.println(c++ + c); 输出为: 3 4 3 这就是我认为正在发生的事情,但输出不匹配: 1. ++a -> +a -> 4 = 2 + 2 2. ++b -> +b -> 4 = 2 + 2 3. c -> +c -> 2 = 1 +
int a = 1, b = 1, c = 1;
System.out.println(a + ++a);
System.out.println(b++ + ++b);
System.out.println(c++ + c);
输出为:
3
4
3
这就是我认为正在发生的事情,但输出不匹配:
1. ++a -> +a -> 4 = 2 + 2
2. ++b -> +b -> 4 = 2 + 2
3. c -> +c -> 2 = 1 + 1
一元post和pre增量的优先级高于加法:
b=1
,b
初始化为1b++
,b
在等式中的当前值为1,然后b
递增++b
,b
由于后期增量而增加,因此为2。现在,由于预增量,它再次增加,方程中的值是31+3
等于4++1
中,值递增,然后返回,并计算为2。使用post增量,返回变量值,然后递增。因此,1++
将计算为1,然后在以后的引用中递增为2。因此:
应该注意的是,优先级并不决定评估顺序。优先级仅更改表达式的括号。Java中的求值顺序始终是从左到右,因为与C/C++不同,请参见。一元后增量和前增量的优先级高于加法:
b=1
,b
初始化为1b++
,b
在等式中的当前值为1,然后b
递增++b
,b
由于后期增量而增加,因此为2。现在,由于预增量,它再次增加,方程中的值是31+3
等于4++1
中,值递增,然后返回,并计算为2。使用post增量,返回变量值,然后递增。因此,1++
将计算为1,然后在以后的引用中递增为2。因此:
应该注意的是,优先级并不决定评估顺序。优先级仅更改表达式的括号。Java中的求值顺序总是从左到右,因为与C/C++不同,请参见。正如我们所知,
x++
和++x
以稍微不同的方式做相同的事情x++
返回该值,然后递增++x
递增该值,然后返回该值
逻辑不错,但你忘了一些东西
在第一个示例中,取a
,即1,并将其添加到++a
。前面的++使它从1增加到2,现在方程是1+2
。那是三
你可以选择b++
b
之前是1,因为你把++放在后面,它给方程的其余部分提供了初始值1,然后将变量增加到2。但是你忘了,即使我们从b++
得到的值是1,在内存中,b
现在是2。由于b是2,下一部分,++b
返回3
同样的错误也发生在第三部分c
返回1,然后递增为2。然后,将1添加到c
,自从您将其递增后,现在是2,得到3
下面是发生的事情:
答:1+2=3
b:1+3=4
c:
1+2=3
正如我们所知,x++
和++x
以稍微不同的方式做同样的事情x++
返回该值,然后递增++x
递增该值,然后返回该值
逻辑不错,但你忘了一些东西
在第一个示例中,取a
,即1,并将其添加到++a
。前面的++使它从1增加到2,现在方程是1+2
。那是三
你可以选择b++
b
之前是1,因为你把++放在后面,它给方程的其余部分提供了初始值1,然后将变量增加到2。但是你忘了,即使我们从b++
得到的值是1,在内存中,b
现在是2。由于b是2,下一部分,++b
返回3
同样的错误也发生在第三部分c
返回1,然后递增为2。然后,将1添加到c
,自从您将其递增后,现在是2,得到3
下面是发生的事情:
答:1+2=3
b:1+3=4
c:
1+2=3
a++
计算为a,然后递增a<代码>++a首先递增a,然后返回a
从处的运算符优先级图表中,可以看到加法从左到右进行
浏览每个示例,其中每个变量从1开始:
a+++a
:a
被添加到a
中,增量为1。这给了我们1+2(3)
b+++++b
:b
递增之前,在它被b++
递增之后,以及在它被+++b
递增之后,被添加到b
。这给了我们1+3(4)
c+++c
:c
在递增之前,在递增之后添加到c
,得到1+2(3)。a++
计算为a,然后递增a<代码>++a首先递增a,然后返回a
从处的运算符优先级图表中,可以看到加法从左到右进行
浏览每个示例,其中每个变量从1开始:
a+++a
:a
被添加到a
中,增量为1。这给了我们1+2(3)
b+++++++b
:b
在它被b++
递增之后,在它被inc之后,被添加到b
b++ + ++b
^^^
post-increment, evaluates to 1
1 + ++b
^^^
pre-increment, due to post-increment is 2, then pre-increments and evaluates to 3
1 + 3
^^^^^
evaluates to 4
a + ++a
^
nothing, evaluates to 1
1 + ++a
^^^
pre-increment, evaluates to 2
1 + 2
^^^^^
evaluates to 3
c++ + c
^^^
post-increment, evaluates to 1
1 + c
^
nothing, due to post-increment is 2 and evaluates to 2
1 + 2
^^^^^
evaluates to 3
3
4
3