A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        小弟现在初学入门,之前对 i ++ 和 ++i  的区别不是特别清楚。后来一位前辈给了我一道试题让我做,琢磨了好久,错了好多次,才想明白一个问题:在代码中不能够想当然,不能感觉是什么样就是什么样,还是得有理有据才行。   自己想的方法虽然比较麻烦,但是思路却很有条理,比较适合初学者。如果哪位前辈有更好的方法用来区别 i++ 与 ++i 还请多多指教。
         
            int x = 0, y = 0;
           x--;                      //  此时x的值为-1
         y = x++  +  ++x;
         /*设:a = x ++       b = ++x;
            此时:a = x++ = -1               x 的值为 0;
            b =++x = 0+1 = 1      x的值为 1;
           y = a+b = 0;                y的值为  0;
        */
         System.out.println(x + y++ + x);
         /*设  c = y++ =0;
              此时 x  + y ++ +x =1+0+1 = 2;
              此时y的值为1;
           */
        System.out.println(y);         // y的值为1
        System.out.println(x);        //x的值为1

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
i++ 就是先参与运算,再自增
++i 就是先自增,再参与运算。

当他们单独使用的时候,就没什么区别了。。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
单独的时候我也能分清,就是几个 ++i  ,i ++ ,-- i, i -- 混到一块儿运算的时候让我头疼不已。
回复 使用道具 举报
说 int x =1;int  y=(++x)+(++x)+(++x);y=? x=?
int x= 1; int y =(x++)+(x++)+(x++); y =? x=?
回复 使用道具 举报
王永荣 发表于 2012-10-25 16:42
说 int x =1;int  y=(++x)+(++x)+(++x);y=? x=?
int x= 1; int y =(x++)+(x++)+(x++); y =? x=?

1:   y =9  ;  x =4;
2:       y=6  ;  x  =4;
回复 使用道具 举报
i++与++i的区别是:
i++先使用i的值,i在自增1;++i是i的值先自增1,再使用i的值。
如果仅仅当做程序中的一个条件,i++   与 ++i没有什么区别,
但是将两者赋给其他变量,将会有所不同。
   如:   i=3;
          t=i++; 此时输出后 i 的值为4,t的值是3;
          t=++i;  此时输出后 i 的值为4,t的值是4;
但是如下
        for(i=0; i<5; i++)
           {
                     a+=i;
             i++;//此时++i 与 i++没有区别,因为都要用的是 i 的值,
}
                 我的记忆方法是如果想很好记的话,可以这样的记忆,因为 i++ 与 ++i都要进行自增
          所以记做  i++ < ++i  ,++i 大于 i++ 所以 ++i优先自增,++i 后自增。
  
        

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
int x =1;int   y=(++x)+(++x)+(++x);y=? x=?
                =( 2 )+( 3 )+( 4 ); y=9 x=4 //++x先加后运算所以
                  x=2   x=3   x=4
int x= 1; int y =(x++)+(x++)+(x++); y=? x=? //x++先运算再加
                =( 1 )+( 2 )+( 3 ); y=6 x=4
                  x=2   x=3   x=4

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
一般使用的时候只要一个 ++ 或者 -- 就行
以前刚学语言的时候也想到这个问题,用C和C++是2种效果
因为编译器不一样,后来打死我都不这么写:a=(b++)+(++c);
只会这样写
  temp1=b++;
  temp2=++c;
a=temp1+temp2;
附:一次逛论坛的时候发现的一篇讨论帖http://software.intel.com/zh-cn/blogs/2012/06/11/ii-3/
回帖才是精华

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1

查看全部评分

回复 使用道具 举报
林晓泉 发表于 2012-10-26 00:39
一般使用的时候只要一个 ++ 或者 -- 就行
以前刚学语言的时候也想到这个问题,用C和C++是2种效果
因为编译 ...

我们两个的思路差不多
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马