zoukankan      html  css  js  c++  java
  • Java下的i++问题

      在解决一道面试题目时遇到问题。

    public class Inc {
        public static void main(String args[]){
            Inc inc = new Inc();
            int i =0;
            inc.fermin(i);
            i=i++;
            System.out.println(i);
        }
        void fermin(int i){
            i++;
        }
    }

      题目答案是输出0。

      查阅相关资料时,才知道i=i++这一步,真实执行情况是temp = i;i=i+1;i=temp;

      未验证真是如此,我将代码改为如下:

    public class Inc {
        public static void main(String args[]){
            Inc inc = new Inc();
            int i =0;
            inc.fermin(i);
            int j=i++;
            System.out.println(j);
        }
        void fermin(int i){
            i++;
        }
    }

      输出结果依旧是0,这符合预期。即:temp=i;i=i+1;j=temp;

      而不仅仅是像有些C/C++那样只执行了i++这一步

      实际上,i=i++,亦或是j=i++之后由于执行i++这步,i的值都会有所增加,只是之后i(/j)=temp这步又将i值变回去,所以只要将代码改成如下这样就可以看到i值的变化了

    public class Inc {
        public static void main(String args[]){
            Inc inc = new Inc();
            int i =0;
            inc.fermin(i);
            int j=i++;
            System.out.println(i);
        }
        void fermin(int i){
            i++;
        }
    }

      输出的结果是1

      说到底其实还是编译器的问题,没必要过分纠结于此!

      

     

  • 相关阅读:
    观后感
    用户故事排球教练助手
    本周工作量
    本周个人作业
    个人工作量
    个人作业
    产品计划总结
    典型用户和场景总结
    排球比赛计分规则
    PowerShell ISE:Windows Server 2008 R2默认不安装
  • 原文地址:https://www.cnblogs.com/jenkov/p/javaiplusplusproblem.html
Copyright © 2011-2022 走看看