日期:2014-05-20  浏览次数:20797 次

新手请教一个关于sum = sum++;的原理问题
public class demo1{
   public static void main(String[] args){
      int i,sum = 0;
      for (i = 0; i < 100 ;i ++)
         {
             sum = sum++;
         }
           System.out.println(sum);
    }
}
为什么值为0
而C里面是100 ,求运算过程,原理!!
------最佳解决方案--------------------

int i = 0;
i = i++;
System.out.println(i);
//输出0


案例讲解:
i的初始值为0,在i = i++ 中首先取得i的值(0)作为将要赋值的表达式的值,然后进行++操作,完成后i的值为1,最后进行赋值操作,注意,赋值不是赋i的值(1),而是赋表达式的值(0)。所以赋值完成后i的值又由(1)变为了(0)

不知道说清楚了没,重点:赋值操作是赋表达式的值
------其他解决方案--------------------
同理

int i = 0;
i = i++ + 2;
System.out.println(i);
//输出2

讲解:
i的初始值为0,在i = i++ + 2 中首先取得i的值(0)作为i++表达式(假设此表达式命名为x)的值,然后进行++操作,完成后i的值为1,然后计算x+2的值也就是(0+2),最后将(0+2)赋值给i。所以赋值完成后i的值又由(1)变为了(2)
------其他解决方案--------------------
引用:
Java code



12345

int i = 0; i = i++; System.out.println(i); //输出0

案例讲解:
i的初始值为0,在i = i++ 中首先取得i的值(0)作为将要赋值的表达式的值,然后进行++操作,完成后i的值为1,最后进行赋值操作,注意,赋值不是赋i的值(1),而是赋表达式的值(0)。所以赋值完成后i的值又由(1)变为了(0……

  如果原理是这样的,我觉得我了解了,谢谢你,哈哈!!!
------其他解决方案--------------------
http://www.ticmy.com/?p=43
------其他解决方案--------------------
public class Demo1 {
public static void main(String[] args) {
    int sum=0;
    int m=0;
    int b=0;
int i;
for (i = 0; i < 100; i++) {
m=sum;
b=m+1;
sum = m;
}
System.out.println(sum);
}
}
自增的时候没有没有应用到后面的复制之中
------其他解决方案--------------------
以求0-100之间的和为例
第一种循环代码的主方法
public static void main(String [] args)
{
    int i = 0;
    int sum = 0;
while(i <= 100)
{
    sum +=i;
    i +=1;
}
System.out.println("The result is sum:"+sum);
}
第二种循环代码的主方法
public static void main(String [] args)
    {
int i = 0;
int sum = 0;
do
{
sum +=i;
i +=1;
}
while(i<=100);
    System.out.println("The result sum :"+sum );
    }
第三种循环的代码的主方法
public static void main(String [] args)
{
int sum = 0;
for(int i = 0 ;i<=100;i++ )
{
sum +=i;
}
System.out.println("The result sum:"+sum);