java中的减_Java中的增量和减量运算符

我对增量和减量运算符有疑问。我不明白为什么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

例如,在第二个println函数中,y乘以而不增加1,而在第三个函数中,x函数与x + 1乘。 据我所知,一元增和一元减运算符的优先级高于算术运算符,那么为什么第二个运算符不增加1(y ++ * x = 3 * 2 = 6)而为什么(y + 1)* x = 8呢?

您已经将运算符优先级与评估顺序混淆了。

如果仅优先考虑,那么为什么还要麻烦y++和++y? :)

对于第二行,如果之后在行中使用变量y,则y将获得值4。这与*优先于+的运算符的算术排序无关。 前递增运算符立即使用递增的值,而后递增运算符在执行操作后立即递增。

需要了解的内容:

后递增运算符(变量名后的++)返回变量的旧值,然后递增变量。因此,如果x是5,则表达式x++的计算结果为5,并且具有将x设置为6的副作用。

这个有点特别:

x = 2; y = 3; z = 4;

System.out.println("Result ="+ z + y++ * x); // output is Result = 46

请注意,此处使用了字符串连接。它先打印Result =,然后打印4,它是z的值,然后是y++ * x的值,是6。 46不是一个数字,它是一个来自两个表达式的4和6。

感谢您的评论。 我最了解。

x = 5;  y = 10;

System.out.println(z = y *= x++); // output is 50 -->z=y=y*x i.e, z=y=10*5 (now, after evaluation of the expression, x is incremented to 6)

x = 2; y = 3; z = 4;

System.out.println("Result ="+ z + y++ * x); // output is Result = 46 --> from Right to left . y++ * x happens first..So, 3 * 2 = 6 (now, y will be incremented to 4) then"Result =" +z (String) + number (y++ * z) will be concatenated as Strings.

x = 5;

System.out.println( x++*x); // output is 30 --> 5 * (5+1 i.e, x is already incremented to 6 when you do x++ so its like 5 *6 )

x = 5;

System.out.println( x*x++); // output is 25 -- > 5 * 5 (x will be incremented now)

我建议阅读本教程,我认为这将使用法-> Java运算符更加清晰。

让我们把它放在碎片上:

x = 5;  y = 10;

System.out.println(z = y *= x++);

在上面的代码中,您将y * = x ++的结果分配给z;这意味着y = y * x ++。现在,x ++将在乘法完成后求值。如果您希望它以前发生过,则应该使用++ x。

x = 2; y = 3; z = 4;

System.out.println("Result ="+ z + y++ * x); // output is Result = 46

在这种情况下,您可以将字符串与上述值连接起来;将首先进行乘法运算,然后再进行加法运算,直到最后才计算后增量。

其余示例与上述示例相似。运算符优先级是上面应用的规则,您可以使用此表查看评估它们的顺序:运算符优先级

您的第一个表达式z = y *= x++等于:

z=y=y*x;

x++;

您的第二个表达式+ z + y++ * x与此等效:

z +""+ (y*x) // here z = 4 and y*x is 6 which gives us 46.

同样,您可以找到第三和第四表达。

因为y++将首先评估y,然后递增。

相反,对于++y,增量发生在评估之前。

它们的优先级高于二进制运算符,但它们的取值为'x'。后递增的副作用不是优先考虑的部分。

y ++将在代码后向y加1。

++ y将在代码之前将y加1。

postfix- ++表示,该变量以其当前值求值,并且在对周围的表达式求值后,该变量递增。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值