java算话

来源:百度知道 编辑:UC知道 时间:2024/06/15 19:04:03
int count=0;
for (int i=0; i < 9; i++)
{
count=count+(count++);
System.out.println(count);
}
结果为什么是0.请给以解释!谢谢 要具体的

count=count+(count++),为了方便,姑且把这个式子记为A=B+C,假设在计算前,count的值是M

计算机的计算过程应该是这样的:
1.先对B、C的数据分配寄存器,并将B的值M直接赋值到寄存器中(因为这个值对于寄存器来讲是常量);
2.由于C部分是count++,所以将C的值M也存入寄存器中;
3.计算++操作,此时内存中count的值变为M+1,但这个改变对B和C在寄存器中的值并没有影响;
4.计算寄存器中的B+C,的到结果M+M,即2M;
5.将计算结果2M写入到内存中count的存储单元。

所以++操作并不是没有执行,而是被后来的操作覆盖掉了。整个表达式的结果与count+=count没有差别,但计算时间要稍长,不过这个时间差不会被感觉到。

这种表达式在学习语法和计算机体系结构的时候还是可以的,在实际工程中一定不要使用,小心老板炒了你……

关键在这个上面count++ 是先把count的值返回然后自增1
在没执行自增之前count=0 所以执行这句话的时候 也就是count=0+0;

如果这个时候值不是赋给它本身的话,count已经是1了 但是这个时候又把count=0+0;所以 输出的时候就是0了;

count=count+(count++);

第1次循环的时候就是0=0+0;
count的值并没有变,所以就还是是0
如果你想让count递增1,可以改成
count+=1;