• Inter1-关于i++和++i


    Q:关于i++和++i计算以下公式的结果

    ```
    public static void main(String[] args) {
    int i = 1;
    System.out.println("i+++i++: " + (i+++i++));
    System.out.println("i: " + (i));
    System.out.println("i+++++i: " + ((i++)+(++i)));
    System.out.println("i: " + (i));
    System.out.println("i+++i+++i++: " + (i+++i+++i++));
    System.out.println("i: " + (i));
    }
    执行结果:
    i+++i++: 3
    i: 3
    i+++++i: 8
    i: 5
    i+++i+++i++: 18
    i: 8
    ```
    A:解释如下

    i++ 可以理解为
    ```
    // 保存初始值
    int temp = i;
    // 做自增操作
    i = i + 1;
    // 返回初始值
    return temp;
    ```

    ++i可以理解为
    ```
    // 做自增操作
    i = i + 1;
    // 返回自增后的值
    return i;
    ```

    所以上述执行代码中

    i+++i++ 的解释为
    ----------------
    1.先算前面i++,根据上面解释,返回原来的i,即为1

    2.再计算后面的i++,而此时的i已经为2,根据上面的解释解释,返回2

    3.最后为1 + 2 = 3,结果为3,而此时的i为3


    i+++++i 的解释为
    ----------------
    1.此时i为3,先算前面的i++,根据上面解释,返回原来的i,即为3

    2.再计算++i,此时的i为4,所以通过++i计算后为5,i也为5

    3.最后为3 + 5 = 8,结果为8,而此时i为5


    i+++i+++i++ 的解释为
    ----------------
    1.此时i为5,先算前面的i++,根据上面的解释,返回原来的i,即为5,i变为6

    2.计算中间的i++,此时i为6,返回原来的i,即为6,i变为7

    3.计算后面的i++,此时i为7,返回原来的i,即为7,i变为8

    4.最后为5 + 6 + 7 = 18,结果为18,i为8


    进Github查询代码

  • 相关阅读:
    对函数的推广
    自然语言也支持泛型
    用委托实现对List的常用方法提取
    C#中的特性(Attributes)(翻译)(转)
    用JQUERY增删元素
    表格折叠展开
    下一代编程语言可能具有的特点
    一种多继承方案
    几年前毕业设计做的CAD二次开发
    数据结构 003.1.1 栈的基本概念
  • 原文地址:https://www.cnblogs.com/Codenewbie/p/5886794.html
Copyright © 2020-2023  润新知