zoukankan      html  css  js  c++  java
  • 20150819(i++与++i的思考)

    今天看到一个很有趣的东西,关于表达式优先级的问题。如下。

    1 int i=0;
    2 int j=(i++)+(i++);
    View Code

    j的值是多少?

    分析:编译器是从左往右编译也就是说编译器先做(i++)

    1、(i++)由于是++所以这个表达式为i也就是0

    2、执行上面的++运算,此时i=1

    3、执行右边的(i++),同1也是返回i但是此时i是1

    4、执行两个表达式中间的+操作即:0+1=1也就是说结果j=1

    综上所述:++操作符在后的时候先计算表达式的值然后在执行++操作。(这里其实还涉及到一个表达式的概念)

    那如果++在前呢?该是多少呢?

    int i=0;
    int j=(++i)+(++i);
    

     分析:

    1、(++i)由于++在前所以先执行++操作再进行表达式的计算也就是这个表达式的值为++0也就是1

    2、(++i)同1但是此时的i为1所以这个表达式的值为++1=2

    3、计算整个表达式的值为1+2=3

    结论:1、++在前先算表达式的值再对变量执行++操作,反之则是先对变量执行++操作再算表达式的值。

       2、编译器是从左到右按照优先级顺序依次进行计算的。

  • 相关阅读:
    MUTC2013 E-Deque-hdu 4604
    MUTC7 C
    MUTC7 A-As long as Binbin loves Sangsang
    MUTC2013 J-I-number-hdu4608
    MUTC2013 H-Park Visit-hdu4607
    判断点是否在多边形内 扫描法
    蓝桥杯 基础练习 十六进制转八进制
    判断点是否在三角形内
    判断点在线段上
    向量的叉乘
  • 原文地址:https://www.cnblogs.com/Schme/p/4741807.html
Copyright © 2011-2022 走看看