在以下程序中
package test;
public class test {
public static void main(String args[])
{
//System.out.println(2+3*4);
int temp=0;
temp+=temp++;
System.out.println(temp);
}
}
我不明白为什么它给我0.可以解释一下吗?
答案 0 :(得分:4)
后增量++运算符在表达式后递增值。
在代码中
temp += temp++;
所以表达式将被评估为
即。 temp= temp + temp++;
temp = 0 + 0 (value will not increment here as you are using post increment)
temp = 0
让我们再看一个例子
temp= temp++ + temp;
所以它将被评估为
temp = 0 + 1 (value is incremented here mean after temp++ expression)
然后打印它将显示的值1
。
答案 1 :(得分:1)
因为如果在表达式中使用变量++,变量将在计算表达式后递增。如果你写:
++variable
变量将递增,然后计算表达式。
答案 2 :(得分:0)
您在postincrement运算符上赋值,它将在赋值后递增值。
预先增量会更好
++temp
答案 3 :(得分:0)
++
后期增量操作,0+0 = 0
首先分配给temp和
答案 4 :(得分:0)
temp+=temp++;
--> temp=temp+ temp++ ;
-> temp = 0 + 0 (and now increment temp i.e, after assigning)
-->so, temp = 0
答案 5 :(得分:0)
我花了一些时间来找到答案,在这里我得到了什么
int temp = 0;
温度+ =温度++;
即temp = temp + temp ++;
现在这里一步一步地发生了什么
1步temp = exp(0 + 0)
2步温度值将增加到1
3步temp将从表达式1
中分配值0所以实际上在表达式中temp值会增加,但由于赋值运算符
再次重置为0这是我的代码作为证明
int i=0,j=0;
System.out.println(i+=i++);
System.out.println(j+=j++);
System.out.println("i= "+i+", j="+j);
System.out.println(i=i+i++);
System.out.println(j=i+j++);
System.out.println("i= "+i+", j="+j);
j+=i++;
System.out.println("i= "+i+", j="+j);
输出
0
0
i= 0, j=0
0
0
i= 0, j=0
i= 1, j=0
所以你可以在最后一行看到i的值是1,它增加了,由于赋值运算符,j的值为0
并且是的,您应该使用预增量使其按预期工作,这只是为了说明这种意外行为的原因。
答案 6 :(得分:0)
非常简单
temp+=temp++
temp=temp+temp++;
以上语句都是等价的。后缀运算符在使用一次后会增加其值。因此0和0 + 0使0。