0 java increment decrement operator-keyword
我对增量和减量运算符有疑问.我无法理解为什么java会给出这些输出.
x = 5; y = 10;
System.out.println(z = y *= x++); // output is 50
x = 2; y = 3; z = 4;
System.out.println("Result = "+ z + y++ * x); // output is Result = 46
x = 5;
System.out.println( x++*x); // output is 30
x = 5;
System.out.println( x*x++); // output is 25
Run Code Online (Sandbox Code Playgroud)
例如,在第二个println函数中,y在不增加1的情况下被乘法,在第三个函数中,x与x + 1相乘.因为我知道一元递增和一元递减运算符比算术运算符具有更高的优先级所以为什么第二个算术计算而不增加1(y ++*x = 3*2 = 6那里为什么不(y + 1)*x = 8?
要理解的东西:
后增量运算符(++在变量名之后)返回变量的旧值,然后递增变量.所以,如果x是5,则表达式x++的计算结果为5,并且具有副作用x被设定为6.
这个有点特别:
x = 2; y = 3; z = 4;
System.out.println("Result = "+ z + y++ * x); // output is Result = 46
Run Code Online (Sandbox Code Playgroud)
请注意,此处使用字符串连接.它打印Result =,那么4这是的值z,则该值的y++ * x哪个是6.这46不是一个数字,它是一个4和一个6相互来自两个表达式.