//程序1public class ForNoOb 
{
    public static void main(String[] args)
    {
        int i;
        int sum = 0;
        for(i = 0; i <=5; sum += i++)
            System.out.println("sum is"+sum);
    }
}//程序2public class ForNoOb1 {
public static void main(String[] args) {
int i,sum=0;
for(i=0;i<=5;i++) sum+=i;
System.out.println("sum is"+sum);
}
}请问程序1和程序2有什么不同吗?为什么结果会不一样。程序1的结果为10,程序2的结果为15。

解决方案 »

  1.   

    你把第二个程序中循环条件的i<=5中的=去掉,结果就一样了!
      

  2.   

    程序1难道只有一个结果?程序1:sum =+= i++等价与,sum = sum+i, i++;
    1.sum=0;i=0;
    2。sum = sum+i=0+0=0;i=i+1=1;
    3.sum = sum+i=0+1=1; i=2;
    4。sum=1+2=3; i=3;
    5.sum=3+3=6; i=4;
    6.sum=6+4=10;i=5;
    7.sum=10+5=15,i=6>5,跳出for循环,所以最后的结果sum为10程序2明显是0+1+2+3+4+5=15
      

  3.   

    第一个程序是先加后判断i的值,第二个程序是先判断后相加i的值
    第一个程序因为先把i 加到6了所以判断大于5了,直接退出了
      

  4.   

    说程序1相当于
    i = 0;
    while( i <= 5){
       System.out.println("sum is"+sum);
       sum += i++; //(1)在for的第三个参数是在程序尾部执行的
    }程序相当于
    while( i <= 5){
       sum+=i;
       i++;
    }
    System.out.println("sum is"+sum);发现了吧,其实程序1的sum比程序2的少循环一次,xixi