java奇怪的增量语法

时间:2013-10-03 02:28:44

标签: java syntax increment

所以我一直被教导,在Java中,在表达式中的变量名称之后使用递增运算符将执行表达式,然后在表达式中的变量名称之前增加值并使用运算符之前执行增量评价。像这样:

int x = 0;
int y = x++;

执行此操作后,y应为0,x应为1.在此示例中为

int x = 0;
int y = ++x;

应为x = 1且y = 1.

遵循相同的逻辑,以下......

int x = 0;
int y = 0;
x = y++ - y++;

应该输出0作为x,输出2作为y,因为0 - 0 = 0。 但输出是

x = -1
y = 2

为什么会这样?

编辑:y的值无关紧要。 x将始终等于-1,y将(最终)等于y + 2.

4 个答案:

答案 0 :(得分:2)

int x = 0;
int y = 0;
x = y++ - y++;
x = (0) - (1)
y = 1 ---> 2 // after ++

所以x = -1y = 2

答案 1 :(得分:0)

x = y++ - y++;

等于

int a = 0;
int b = 0;
int c = 0;
a = y++; // 0
b = y++; // 1
c = y;
-1 = a - b;
2 = y;

答案 2 :(得分:0)

看起来你所有的假设都是不正确的。在你的第一个案例中

int x = 0;
int y = x++;

x为0且y为1,因为y取x的递增值。类似地,对于第二种情况,x为0,y为1。 对于你的最后一个案例:

int x = 0;
int y = 0;
x = y++(y is 1 here) - y++(y is 2 now);

所以这里是y ++,使y 1然后你用y的另一个增量减去这个1而不是那个y 2,所以x = 1-2 = -1

答案 3 :(得分:0)

  

我被告知,当有一个变量++时,它总是在语句完成后发生。

不是在语句之后,而是在表达式之后。

只要您n - (n + 1),就会得到结果-1。在完成任务之前,必须对作业的右侧进行全面评估。