[英]When exactly does postfix unary operator happen?
我读了一些关于一元运算符的帖子: java “C - C ++”中关于postfix / prefix操作排序的 postfix和unary以及添加剂有什么区别
还有一些。
但是,我仍然不清楚何时更改值。
例如:
int x = 1;
x = x++;
System.out.print("x = x++ ==> ");
System.out.print(" x = " + x);
System.out.println();
int x = 1;
x = x++ + x++;
System.out.print("x = x++ + x++ ==> ");
System.out.print(" x = " + x);
System.out.println();
输出是:
x = x++ ==> x = 1
x = x++ + x++ ==> x = 3
所以在第一个块中x
被赋值给x
然后递增,但是从不使用该值,否则输出将是x = 2
。
在第二个块中,如果我理解正确,则在赋值之前评估第一个x++
,然后对第二个x++
进行求值,但从不使用。
如果在第二个块中, x++
将在赋值后进行评估但从未使用过,则输出将为x = 2
。 如果两者都已使用,则输出将为x = 4
。
所以得出结论-我仍然迷茫的时候, 这也正是增量完成的。
在线
x = x++ + x++;
假设x = 1
,第一个x++
返回“1”作为值, 然后它将x
递增到2.所以基本上,它将旧值赋给x
。
第二个x++
做同样的事情; 它返回x
的值,现在为2,然后才将其值增加到3 - 不使用该值。
您的代码相当于:
tmp = x;
x = x + 1;
tmp2 = x;
x = x + 1; // not used
x = tmp + tmp2;
可能对您有所帮助的链接:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.