class T {
public static void main(String args[]) {
int x = 0;
x = x++;
System.out.println(x);
}
}
答案 0 :(得分:8)
因为++
是“后增量”运算符 - 它会在增加之前返回变量的值。
步骤如下:
i
的值(在递增之前)并记住它i
i
答案 1 :(得分:4)
因为后增量运算符返回时间值(x
的当前值),然后递增x。
试试这样:
class T {
public static void main(String args[]) {
int x = 0;
x = ++x;
System.out.println(x);
}
}
答案 2 :(得分:3)
x = x++;
相当于
temp = x;
x = x + 1;
x = temp;
这就是输出为零的原因。
此运算符称为后增量运算符。 与增量后运算符相关的其他运算符是每增量运算符。
x = ++x;
如果您应用每增量输出将为1。
答案 3 :(得分:2)
因为您使用了后缀++
运算符,这意味着它在赋值后进行了评估。因此,首先评估x = x
,因此x
保持为0
,然后评估x++
,但结果不会分配给任何内容。
您可以使用前缀++
运算符来获得所需的结果:x = ++x;
来自docs:
可以在(前缀)或之前应用递增/递减运算符 after(postfix)操作数。代码结果++;和++结果;将 两个结果都以1递增。唯一的区别是 前缀版本(++结果)评估为递增的值, 而后缀版本(结果++)评估为原始版本 值。
答案 4 :(得分:1)
x++
返回零,然后递增x。赋值x = x++
将x
(在增加之后)设置为x++
的返回值,即0。
答案 5 :(得分:0)
因为++ after在程序运行后添加。你可以通过以下两种方式解决它
class T {
public static void main(String args[]) {
int x = 0;
x = ++x;
System.out.println(x);
}
}
或
class T {
public static void main(String args[]) {
int x = 0;
x += 1;
System.out.println(x);
}
}
答案 6 :(得分:0)
这是因为x++
实际上意味着“使用x
中存储的值然后递增它”。如果要在使用前增加该值,请改为++x
。
答案 7 :(得分:0)
我现在不知道它会对输出产生影响,但你不需要导入,你可以改变:
x = x++;
到:
x++;
答案 8 :(得分:0)
以正常增量显示帖子增量的示例,正如先前的回答者所说:
class T {
public static void main(String args[]) {
for (int i = 0; i < 6; i++) {
int x = 0;
x = x+1+i;
System.out.println(x);
}
}
}
答案 9 :(得分:0)
它表现出来的原因是因为相互作用 在运算符优先级和++的奇数“返回值”之间 运营商。后缀增量首先发生(请参阅您最喜欢的副本 运算符优先级图);但是后缀,根据定义,返回 变量的先前值。所以“回报价值”不是 “原始x加一”,而只是“原始x”(x,在此 point,实际上包含递增的值)。此返回值 然后分配给x,它会覆盖++在第一个中所做的事情 地点。 IOW,在表达式x = x ++中,递增的值会丢失, 由最后发生的任务覆盖。
Google是你的朋友! :)
答案 10 :(得分:0)
解释你在做什么:
class T {
public static void main(String args[]) {
int x = 0; // x is zero
x = x++; // assign x to be x (which is 0).
// then increment a non-existant variable by 1
System.out.println(x); //print 0
}
}