zoukankan      html  css  js  c++  java
  • 一篇看懂++i i++

    /**
     * @Title:Test03
     * @Description:
     * @author Crazy-ZJ
     * @data 2017年9月28日上午9:38:00
     * @book 疯狂java讲义(第三版):
     */
    public class Test03 {
        public static void main(String[] args){
            int i = 0;
            i = i++ + ++i;//先执行i++之后i的值为0,再执行++i,i的值为1,再补增i++ 所以结果应为 i = 0 + 2; 
            int j = 0;
            j = ++j + j++ + j++ + j++;//先执行++j之后j的值为1,再执行j++之后j的值仍然为1,再执行j++的值后j的值还是1但要补增之前的j++,
    //        此时j的值变为2,再执行j++之后j的值为2,再补增j++此时j的值为3,最终结果为:j=1+1+2+3;
            int k = 0;
            k = k++ + k++ + k++ + ++k;//先执行k++之后k的值为0,再执行k++,此时要补增之前k++此时k的值为1再执行第三个k++此时补增之前的k++
    //        此时k的值为2,再支持++k后k的值为3,之后再补增第三个k++此时k的值为4,所以最终结果是 k = 0+1+2+4 
            int h = 0;
            h = ++h + ++h;
            int p1=0,p2=0,q1=0,q2=0;
            p1=++q1;
            p2=q2++;
            System.out.println("i = "+i);
            System.out.println("j = "+j);
            System.out.println("k = "+k);
            System.out.println("h = "+h);
            System.out.println("p1 = "+p1);
            System.out.println("p2 = "+p2);
            System.out.println("q1 = "+q1);
            System.out.println("q2 = "+q2);
        }
    }

    最终输出结果为:

    i = 2
    j = 7
    k = 7
    h = 3
    p1 = 1
    p2 = 0
    q1 = 1
    q2 = 1

    总结:

    之前在学习i++ 和++i的时候有一个误区---我当时知道i++是在表达式运算完以后自增,++i是在自增以后再参与运算。但是这样是错误的!看上面的例子就知道,

    K=k++ + k++ + k++ + ++k;这种情况 在我以前看来结果是1,其实第一个k++参与运算的时候没有自增,但在第二个k++的时候k要补增第一个K++,第三个要补增第二个,第四个要补增第三个。并不是这个表达式运算完成以后K++自增,而是在下一个K++的时候自增!!!

    拼了命、尽了兴
  • 相关阅读:
    解决pyinstaller 打包后运行exe程序出现的"ModuleNotFindError"
    【Tensorflow专题-03】深层神经网络
    【Tensorflow专题-02】使用tensorflow训练神经网络
    【Tensorflow专题-01】深度学习应用介绍及tensorflow基本使用
    Github 简明教程
    Composer 安装与使用
    为jQuery的$.ajax设置超时时间
    thinkphp 数据库表多字段排序
    TP5如何隐藏入口文件index.php
    Atom编辑器快捷键大全
  • 原文地址:https://www.cnblogs.com/zj-phper/p/7605611.html
Copyright © 2011-2022 走看看