关于 i++ 和 ++i 的一些问题

i++

i++ 如果有表达式运算,是先参与表达式计算,然后再自加1。具体见代码说明:

int a = 2;
int b = a++;
System.out.println("Test  " + a + "  " + b);

输出结果:
a = 3;b = 2
---------------

int a = 2;
a = a++;
System.out.println("Test  " + a);

输出结果:
a = 2
--------------

int a = 2;
a++;
System.out.println("Test  " + a);

输出结果:
a = 3

++i

++i 如果有表达式运算,是先自行加1,然后用自加后的值参与运算。具体见代码说明:

int a = 2;
int b = ++a;
System.out.println("Test  " + a + "  " + b);

输出结果:
a = 3;b = 3
---------------

int a = 2;
a = ++a;
System.out.println("Test  " + a);

输出结果:
a = 3
--------------

int a = 2;
++a;
System.out.println("Test  " + a);

输出结果:
a = 3

复合运算( i++ + ++i)

int a = 2;
int b = a++ + ++a;
System.out.println("Test  " + a + "  " + b);

输出结果:
a = 4;b = 6

解析说明:

  1. a++ 时,a = 2,有表达式,先运算,再自加1 所以,b = 2,a = 3
  2. ++a 时,a = 3,有表达式,先自行加1,再用自加后的值参与运算 所以此时 a = 4,b = 4
  3. 最后b = 2 + 4 = 6
  4. 按上面的计算,那 a 不该是 5 或 7 吗。其实仔细看,a 并没有经过表达式运算赋值 只是经历了 i++ 和 ++i ,所以 a 也只是经过了 两次自行加1 所以 a = 2 + 1 + 1 = 4

一些栗子

    int a = 0;
    int b = 0;
    for (int i = 0; i < 99; i++) {
        a = a++;
    }
    System.out.println("Test  " + a + "  " + b);
    for (int i = 0; i < 99; i++) {
        a = ++a;
    }
    System.out.println("Test  " + a + "  " + b);
    a = 0;
    b = 0;
    for (int i = 0; i < 99; i++) {
        b = a++;
    }
    System.out.println("Test  " + a + "  " + b);
    a = 0;
    b = 0;
    for (int i = 0; i < 99; i++) {
        b = ++a;
    }
    System.out.println("Test  " + a + "  " + b);

    输出结果:
    Test  0  0
    Test  99  0
    Test  99  98
    Test  99  99
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 10,557评论 0 13
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 4,039评论 0 2
  • 选择题部分 1.(),只有在发生短路事故时或者在负荷电流较大时,变流器中才会有足够的二次电流作为继电保护跳闸之用。...
    skystarwuwei阅读 14,379评论 0 7
  • 选择题部分 1.()部门负责日常监督检查工作,安全巡视的同时进行消防检查,推动消防安全制度的贯彻落实。 A: 消防...
    skystarwuwei阅读 15,943评论 0 3
  • 前两天,有网友问了我一个关于C语言的问题,本着认真装逼的态度,我把大学时学过的C语言课本翻了一遍,终于找到了答案。...
    C语言学习阅读 1,198评论 0 6

友情链接更多精彩内容