黑马程序员技术交流社区

标题: 求各位大大,关于for循环的一个小问题。 [打印本页]

作者: onlyonewf    时间: 2012-6-10 10:45
标题: 求各位大大,关于for循环的一个小问题。

1、for(int i=0;i<10;++i){
  doSome....
}
1、for(int i=0;i<10;i++){
  doSome....
}
//在这个循环里面++i和i++有什么区别吗?
作者: 吴超    时间: 2012-6-10 10:52
本帖最后由 吴超 于 2012-6-10 11:06 编辑

++i和i++的区别:i++,在执行完后i=i+1;++i,在执行前i=i+1
而在,for(参数初始化:条件判断:更新循环变量)
                      {                                          
                              执行语句:
                       }
更新循环变量,并不会影响你的输出结果


个人对for循环总结:
http://wuchao2877.blog.163.com/blog/static/3717528220123555149103/
作者: kevindavid    时间: 2012-6-10 10:52
本帖最后由 kevindavid 于 2012-6-10 10:57 编辑

简单的说吧这就是一个优先级的问题。也就是先加和后加的问题
在你的代码中前++和后++是体现不出来的。但是一旦出现赋值操作那么就可以体现出不他们的区别了
比如 说: int a=2    a=a++  和a=++a  这两个的值是完全 不 同的a=a++这里a的值是2因为这里是先执行了
将a赋值给a的操作然后再执行的a++所以导致++的值没有赋给a   而且第二个  a=++a这里是先对a执行了++操作
然后再执行的赋值操作所以这里++操作就将a的值改变了。而赋值后a的值就是3了。
作者: 张洁    时间: 2012-6-10 11:12
++i 和 i++的区别就是:
++i 是先加后引用,i++ 的意思就是先引用后加
举个简单的例子:int i = 1;
System.out.println(i++);结果就是:1
System.out.println(++i);结果就是:2

结合你这题目来说的话,单就for循环,++i  ,i++是没有区别的:
int num = 0;
for(int i=0; i<10; i++ /*++i*/) {
        System.out.println(i);
}结果都是:0,1,2,3,4,5,6,7,8,9


作者: 朝哥    时间: 2012-6-10 11:14
一般lz就记着这两种使用情况:
单独用:比如说: i++和++i    没区别,这里也包括自增的情况,lz的题这样的
但是如果 你是通过自增来给另个变量赋值,那么就有区别了:
a=b++    表示先赋值给b,再自加1,
强调:上面代码等同于a=b;b=b+1
a=++b     表示先自加1,再赋值给b
强调:上面代码等同于b=b+1;a=b

作者: 邵阳    时间: 2012-6-10 11:18
1、for(int i=0;i<10;++i){
  doSome....
}
1、for(int i=0;i<10;i++){
  doSome....
}
在你这个程序里,++i和i++的效果是一样的。都有i=i+1的意思。
不过他俩区别是

自增(前) ++i      :a=2;b=++ a    ——————    a=3;b=3
自增(后)  i++       :a=2;b=a++  ———————    a=3;b=2
  


还有在论坛里看到的跟你差不多的问题,不过他编写的程序对区分i++和++i很有帮助,这个是我的回答
class Part
{
      public  static void main(String[] args)
{
        int j = 0;
        for (int i = 0; i < 100; i++)
  {
            
   
j = j++;   // 楼主只要将这的j=j++改成++j,这样得的运算结果就是100。这个是因为   :自增(后)j=j++是首先计算j=j,也就当 于j=j,因为 int  j=0,所以不论循环多少j都是0.
               自增(前)j=++j,相当于j=j+1,所以运算结果是100.
   
        }
        System.out.println(j);
    }
}       //[/code]输出为0。。。。实在想不透了,求解




作者: 黄昆    时间: 2012-6-10 15:44
++i,跟i++的意思不懂么?
++i是先将i+1赋值给I然后再让I参加运算。
I++是先将i参加运算再给i赋值。
在for循环里边这两个用在你放的那个位置功能是一样的就是更新一下变量。
作者: 汪璨    时间: 2012-6-10 16:47
i++和++i单存在是没有区别的,要参与运算的时候才有区别

比如a = i++;    ++放在后面就是 i 把值赋给 a 以后自己回来自增一次,那么 a 和 i 的值不相等

      a= ++i;     ++放在前面就是 i 自增以后在出去把值赋给 a ,那么 a 和 i 的值就相等!
作者: ☆丿灬北纬28°    时间: 2012-6-10 17:23
i++ 的意思是 先将i值存在一个临时变量里面,接着i 的值加1,最后将保存在临时变量里的、更改前的值返回
而 ++i 的意思是先将 i 的值加1,然后返回更改后的i值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2