【问题标题】:How does post-increment work on an assignment(with the same variable)? [duplicate]后增量如何处理赋值(使用相同的变量)? [复制]
【发布时间】:2018-06-29 00:54:04
【问题描述】:

我有这个代码...

for(int i=0; i<10 ; ) {
    i = i++;
    System.out.println("Hello World");
}

输出:

Hello World
Hello World
Hello World...

循环将无限重复,因为在每次循环迭代后i 仍然是0

我认为这个表达式 i = i++; 是多余的......就像这个 i=(i=i+1);,但它仍然是 0 那么它是如何工作的?

【问题讨论】:

    标签: java variable-assignment post-increment


    【解决方案1】:

    i = i++; 是一个复杂的构造,它的真正作用类似于以下内容:

    int iOld = i;
    i = i + 1;
    i = iOld;
    

    首先,将 i 的值压入堆栈。然后,变量 i 递增。最后,栈顶的值被弹出并赋值给 i。最终结果是什么都没有发生——a smart optimizer could remove the whole statement.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-10
      • 2017-06-20
      • 1970-01-01
      • 2014-05-06
      • 2020-10-30
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多