让我说出这段代码:
public class Incrementor {
private int i;
public int getInt(){
return i;
}
private void incrementA(){
i = i+1;
}
private void incrementB(){
i = i++;
}
}
incrementA()
之前致电getInt()
时,该值为1。incrementB()
之前致电getInt()
时,该值为0。答案 0 :(得分:5)
任务
i = i++;
基本上等同于
// These two lines corresponds to i++
int temporary_variable = i;
i = i + 1;
// This line is your assignment back to i
i = temporary_variable;
后缀++
运算符在递增之前返回 old 值。
如果您要做的只是增加变量,则无需赋值,因为它内置在++
操作本身中:
private void incrementB(){
i++; // Increment i by one
}
答案 1 :(得分:4)
i++
返回增量发生之前的i
的值。代码i = i++
等于i = i
。
答案 2 :(得分:3)
i = i++;
虽然此语法非常有效,但它并没有按照您的想法进行。应该是:
i++;
i++
是一个后递增运算符,表示当用作表达式的右侧时,它会在递增i之前返回i的值。