zoukankan      html  css  js  c++  java
  • 关于++i与i++的问题

    今天在网上看到一篇文章,看到评论,挺有意思的,所以就在此再来回顾一下

    题目如下所示,求出打印i的值:

    1     public static void main(String[] args) {  
    2         int i = 0;  
    3         for (i++; i++ < 10; i++);
    4         System.out.println(++i); 
    5        
    6     } 

    此问题主要就是考的对++i与i++的区别,对于这两者的区别,我们可以这样理解。就好比是电费付费的问题,有两种付费情况:一种是先付费,意思就是先交钱才给电用;一种是后付费,意思就是先用着电,下一个月再交钱。当然,现在的电费好像都是先付费吧。

    先来看++i和i++,我们可以把++i看成是电费的先付费,i++看成是电费的后付费,两个加号在前面的就是先付费,在后面的就是后付费,这样也比较好记住。记住了,但也要理解,看看怎么理解呢。++i 先加1再运算(先交电费才给用电)结果为i+1,i++先运算再加1(先用电下月再交钱)结果为i。

    理解了之后,我们再来看看题目,求出打印i的值。先看第三行的for循环中的条件

    i++;i++<10;i++

    i的初始值为0,条件中的第一部分i++,结果为0,运算之后会加1;i++<10;到这儿i就为1,i++<10,结果为1<10,满足条件,i在运算之后会加1;条件中的第三部分i++,结果为2。这是第一次循环,下面用简单的表示方式,列数字分别表示相应列的i

    第一次循环  0;1;2    (循环体中输出i的结果为2)

    第二次循环  2;3;4    (循环体中输出i的结果为4)

    第三次循环  4;5;6    (循环体中输出i的结果为6)

    第四次循环  6;7;8    (循环体中输出i的结果为8)

    第五次循环  8;9;10    (循环体中输出i的结果为10)

    第六次循环  10;11;12  (此时11<10条件不成立,for循环体中代码不执行,跳出循环,但i的结果仍为12)

    再来看看循环体外的第4行 System.out.println(++i); ++i这是先付费,得先交钱再用电,也就是先加1再运算,那么结果就是12+1=13

    下面再来看另一种情况,加号在前面:

    1 public static void main(String[] args) {  
    2         int i = 0;  
    3         for (++i; ++i < 10; i++);
    4             System.out.println(++i); 
    5     } 

    第一次循环  1;2;3    (循环体中输出i的结果为2)

    第一次循环  3;4;5    (循环体中输出i的结果为4)

    第一次循环  5;6;7    (循环体中输出i的结果为6)

    第一次循环  7;8;9    (循环体中输出i的结果为8)

    第一次循环  9;10;11  (此时10<10条件不成立,for循环体中代码不执行,跳出循环,但i的结果仍为10)

    再来看看循环体外的第4行 System.out.println(++i); ++i这是先付费,得先交钱再用电,也就是先加1再运算,那么结果就是10+1=11

    需要注意的是:第一种情况每次循环i是先运算再加1到循环体,所以第4行打印语句中的i是等于i+1,例如第一次循环(i=1+1),而第二种情况的每次循环是先加1再运算到循环体,所以第4行打印语句中的i是等于i,例如第一次循环(i=2)

     
  • 相关阅读:
    javaWeb服务详解【客户端调用】(含源代码,测试通过,注释) ——Emp实体类
    javaWeb服务详解【客户端调用】(含源代码,测试通过,注释) ——Dept实体类
    javaWeb服务详解【客户端调用】(含源代码,测试通过,注释) ——Dept实体类
    javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
    hdu2044:一只小蜜蜂
    最大连续子序列和
    牛客练习赛20 F-填数字
    Attack City and Capture Territory & 取石子(博弈)
    畅通工程1
    和最大子序列
  • 原文地址:https://www.cnblogs.com/zjwia/p/3029115.html
Copyright © 2011-2022 走看看